svn commit: r342883 - head/sys/net80211

Andriy Voskoboinyk avos at FreeBSD.org
Wed Jan 9 12:50:26 UTC 2019


Author: avos
Date: Wed Jan  9 12:50:24 2019
New Revision: 342883
URL: https://svnweb.freebsd.org/changeset/base/342883

Log:
  net80211: fix panic when device is removed during initialization
  
  if_dead() is called during device detach - check if interface is
  still exists before trying to refresh vap MAC address
  (IF_LLADDR will trigger page fault otherwise).
  
  MFC after:	5 days

Modified:
  head/sys/net80211/ieee80211_ioctl.c

Modified: head/sys/net80211/ieee80211_ioctl.c
==============================================================================
--- head/sys/net80211/ieee80211_ioctl.c	Wed Jan  9 11:13:05 2019	(r342882)
+++ head/sys/net80211/ieee80211_ioctl.c	Wed Jan  9 12:50:24 2019	(r342883)
@@ -3537,9 +3537,13 @@ ieee80211_ioctl(struct ifnet *ifp, u_long cmd, caddr_t
 			/*
 			 * Check if the MAC address was changed
 			 * via SIOCSIFLLADDR ioctl.
+			 *
+			 * NB: device may be detached during initialization;
+			 * use if_ioctl for existence check.
 			 */
 			if_addr_rlock(ifp);
-			if ((ifp->if_flags & IFF_UP) == 0 &&
+			if (ifp->if_ioctl == ieee80211_ioctl &&
+			    (ifp->if_flags & IFF_UP) == 0 &&
 			    !IEEE80211_ADDR_EQ(vap->iv_myaddr, IF_LLADDR(ifp)))
 				IEEE80211_ADDR_COPY(vap->iv_myaddr,
 				    IF_LLADDR(ifp));


More information about the svn-src-head mailing list