Search Linux Wireless

RE: [PATCH 4/8] mac80211: RCU-ify STA info structure access

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> This patch is causing some problems in the iwlwifi driver. Often when
> one of these RCU locks are held the driver tries to send a command to
> the device and waits for the response, or it does some other activity
> requiring sleeping. This causes numerous BUG messages as seen below:
> 
> BUG: sleeping function called from invalid context at
> /home/rchatre/wifi/repos.git/iwlwifi-2.6/kernel/mutex.c:209


>  [<dca8e637>] iwl3945_mac_conf_tx+0x1b0/0x234 [iwl3945]
>  [<dc9d186a>] ieee80211_sta_wmm_params+0x165/0x195 [mac80211]

Ouch, sorry. Try this patch please.

johannes

---
 net/mac80211/ieee80211_sta.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- everything.orig/net/mac80211/ieee80211_sta.c	2008-03-05 10:17:37.000000000 +0100
+++ everything/net/mac80211/ieee80211_sta.c	2008-03-05 10:18:12.000000000 +0100
@@ -1930,16 +1930,16 @@ static void ieee80211_rx_mgmt_assoc_resp
 
 	if (elems.wmm_param && (ifsta->flags & IEEE80211_STA_WMM_ENABLED)) {
 		sta->flags |= WLAN_STA_WME;
+		rcu_read_unlock();
 		ieee80211_sta_wmm_params(dev, ifsta, elems.wmm_param,
 					 elems.wmm_param_len);
-	}
+	} else
+		rcu_read_unlock();
 
 	/* set AID, ieee80211_set_associated() will tell the driver */
 	bss_conf->aid = aid;
 	ieee80211_set_associated(dev, ifsta, 1);
 
-	rcu_read_unlock();
-
 	ieee80211_associated(dev, ifsta);
 }
 


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux