Thread (13 messages) 13 messages, 2 authors, 2008-03-05

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

From: Johannes Berg <johannes@sipsolutions.net>
Date: 2008-03-05 09:23:38

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);
 }
 

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help