Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Jun 2009 18:55:27 +0000 (UTC)
From:      Sam Leffler <sam@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r193337 - head/sys/net80211
Message-ID:  <200906021855.n52ItRMw025236@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sam
Date: Tue Jun  2 18:55:27 2009
New Revision: 193337
URL: http://svn.freebsd.org/changeset/base/193337

Log:
  move if_detach to the top of ieee80211_ifdetach to close various races
  
  Reviewed by:	jhb

Modified:
  head/sys/net80211/ieee80211.c

Modified: head/sys/net80211/ieee80211.c
==============================================================================
--- head/sys/net80211/ieee80211.c	Tue Jun  2 18:53:21 2009	(r193336)
+++ head/sys/net80211/ieee80211.c	Tue Jun  2 18:55:27 2009	(r193337)
@@ -313,6 +313,8 @@ ieee80211_ifdetach(struct ieee80211com *
 	struct ifnet *ifp = ic->ic_ifp;
 	struct ieee80211vap *vap;
 
+	if_detach(ifp);
+
 	while ((vap = TAILQ_FIRST(&ic->ic_vaps)) != NULL)
 		ieee80211_vap_destroy(vap);
 	ieee80211_waitfor_parent(ic);
@@ -329,11 +331,10 @@ ieee80211_ifdetach(struct ieee80211com *
 	ieee80211_crypto_detach(ic);
 	ieee80211_power_detach(ic);
 	ieee80211_node_detach(ic);
-	ifmedia_removeall(&ic->ic_media);
 
+	ifmedia_removeall(&ic->ic_media);
 	taskqueue_free(ic->ic_tq);
 	IEEE80211_LOCK_DESTROY(ic);
-	if_detach(ifp);
 }
 
 /*



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