Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Apr 2018 00:23:49 +0000 (UTC)
From:      Brooks Davis <brooks@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r332161 - stable/11/sys/dev/sbni
Message-ID:  <201804070023.w370Nn4J079397@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: brooks
Date: Sat Apr  7 00:23:49 2018
New Revision: 332161
URL: https://svnweb.freebsd.org/changeset/base/332161

Log:
  MFC r331651-r331653
  
  r331651:
  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.
  
  r331652:
  Revert r331651 to recommit with proper commit metadata.
  
  r331653:
  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
  Sponsored by:	DARPA, AFRL
  Differential Revision:	https://reviews.freebsd.org/D14874

Modified:
  stable/11/sys/dev/sbni/if_sbni.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/sbni/if_sbni.c
==============================================================================
--- stable/11/sys/dev/sbni/if_sbni.c	Sat Apr  7 00:04:28 2018	(r332160)
+++ stable/11/sys/dev/sbni/if_sbni.c	Sat Apr  7 00:23:49 2018	(r332161)
@@ -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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201804070023.w370Nn4J079397>