mac80211: fix a race condition in ad-hoc bringup with fixed bssid
authorFelix Fietkau <nbd@openwrt.org>
Sun, 20 Dec 2009 11:04:43 +0000 (11:04 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 20 Dec 2009 11:04:43 +0000 (11:04 +0000)
SVN-Revision: 18859

package/mac80211/patches/200-mac80211_ibss_fix.patch [new file with mode: 0644]

diff --git a/package/mac80211/patches/200-mac80211_ibss_fix.patch b/package/mac80211/patches/200-mac80211_ibss_fix.patch
new file mode 100644 (file)
index 0000000..c2fb1d7
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/net/mac80211/ibss.c
++++ b/net/mac80211/ibss.c
+@@ -382,6 +382,7 @@ static void ieee80211_rx_bss_info(struct
+ struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
+                                       u8 *bssid,u8 *addr, u32 supp_rates)
+ {
++      struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
+       struct ieee80211_local *local = sdata->local;
+       struct sta_info *sta;
+       int band = local->hw.conf.channel->band;
+@@ -397,6 +398,9 @@ struct sta_info *ieee80211_ibss_add_sta(
+               return NULL;
+       }
++      if (ifibss->state == IEEE80211_IBSS_MLME_SEARCH)
++              return NULL;
++
+       if (compare_ether_addr(bssid, sdata->u.ibss.bssid))
+               return NULL;