Author: brooks
Date: Tue Mar 27 21:06:18 2018
New Revision: 331653
URL: https://svnweb.freebsd.org/changeset/base/331653

Log:
  Copy flags over ifr_union directly rather than via casts through ifr_data.
  
  No functional change in practice.  If the sbni driver supported
  64-bit big-endian system, this would be an ABI changes, but it is
  i386-only.  The old version leaked a word of stack on 64-bit systems.
  
  This eliminates the only assignment to ifr_data.
  
  Reviewed by:  kib
  MFC after:    1 week
  Sponsored by: DARPA, AFRL
  Differential Revision:        https://reviews.freebsd.org/D14874

Modified:
  head/sys/dev/sbni/if_sbni.c

Modified: head/sys/dev/sbni/if_sbni.c
==============================================================================
--- head/sys/dev/sbni/if_sbni.c Tue Mar 27 21:04:54 2018        (r331652)
+++ head/sys/dev/sbni/if_sbni.c Tue Mar 27 21:06:18 2018        (r331653)
@@ -1144,7 +1144,7 @@ sbni_ioctl(struct ifnet *ifp, u_long command, caddr_t 
                flags.fixed_rxl = (sc->delta_rxl == 0);
                flags.fixed_rate = 1;
                SBNI_UNLOCK(sc);
-               ifr->ifr_data = *(caddr_t*) &flags;
+               bcopy(&flags, &ifr->ifr_ifru, sizeof(flags));
                break;
 
        case SIOCGINSTATS:
@@ -1163,7 +1163,7 @@ sbni_ioctl(struct ifnet *ifp, u_long command, caddr_t 
                error = priv_check(td, PRIV_DRIVER);
                if (error)
                        break;
-               flags = *(struct sbni_flags*)&ifr->ifr_data;
+               bcopy(&ifr->ifr_ifru, &flags, sizeof(flags));
                SBNI_LOCK(sc);
                if (flags.fixed_rxl) {
                        sc->delta_rxl = 0;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to