Changeset 12052


Ignore:
Timestamp:
2008-08-01T00:41:31+02:00 (10 years ago)
Author:
nbd
Message:

madwifi: fix race condition triggered by active split wds sta interfaces during vap delete

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/madwifi/patches/371-wds_sta_separation.patch

    r12051 r12052  
    151151 #ifdef ATH_REVERSE_ENGINEERING 
    152152        /* 
     153@@ -5890,6 +5905,8 @@ 
     154 ieee80211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 
     155 { 
     156        struct ieee80211vap *vap = dev->priv; 
     157+       struct ieee80211com *ic = vap->iv_ic; 
     158+       struct ieee80211_node *ni; 
     159  
     160        switch (cmd) { 
     161        case SIOCG80211STATS: 
     162@@ -5898,8 +5915,20 @@ 
     163        case SIOC80211IFDESTROY: 
     164                if (!capable(CAP_NET_ADMIN)) 
     165                        return -EPERM; 
     166+               /* drop all node subifs */ 
     167+               TAILQ_FOREACH(ni, &ic->ic_sta.nt_node, ni_list) { 
     168+                       struct ieee80211vap *avp = ni->ni_subif; 
     169+ 
     170+                       if (ni->ni_vap != vap) 
     171+                               continue; 
     172+                       if (!avp) 
     173+                               continue; 
     174+                       ni->ni_subif = NULL; 
     175+                       ieee80211_stop(avp->iv_dev); 
     176+                       ic->ic_vap_delete(avp); 
     177+               } 
     178                ieee80211_stop(vap->iv_dev);    /* force state before cleanup */ 
     179-               vap->iv_ic->ic_vap_delete(vap); 
     180+               ic->ic_vap_delete(vap); 
     181                return 0; 
     182        case IEEE80211_IOCTL_GETKEY: 
     183                return ieee80211_ioctl_getkey(dev, (struct iwreq *) ifr); 
    153184--- a/net80211/ieee80211_node.c 
    154185+++ b/net80211/ieee80211_node.c 
Note: See TracChangeset for help on using the changeset viewer.