summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-04-21 00:30:49 +0200
committerJohn W. Linville <linville@tuxdriver.com>2009-04-22 16:57:19 -0400
commit29b4a4f7c7b588b5568edd0da42f38623b81fc66 (patch)
tree4c607b2e053f7f5a4f4d1a10b46d949ba42b5f50 /net
parent0cf4c01ebe2ccf4487fe9301bab905365dca06c3 (diff)
downloadlinux-3.10-29b4a4f7c7b588b5568edd0da42f38623b81fc66.tar.gz
linux-3.10-29b4a4f7c7b588b5568edd0da42f38623b81fc66.tar.bz2
linux-3.10-29b4a4f7c7b588b5568edd0da42f38623b81fc66.zip
mac80211: fix IBSS code to not sleep while atomic
With the RCU locking here we sleep while in an atomic context, since we can sleep just use mutex locking for the interface list instead of RCU. Sorry, seems I didn't get that in my UML test. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/ibss.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 4f7a54518be..6030e003180 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -784,14 +784,14 @@ void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local)
{
struct ieee80211_sub_if_data *sdata;
- rcu_read_lock();
- list_for_each_entry_rcu(sdata, &local->interfaces, list) {
+ mutex_lock(&local->iflist_mtx);
+ list_for_each_entry(sdata, &local->interfaces, list) {
if (sdata->vif.type != NL80211_IFTYPE_ADHOC)
continue;
sdata->u.ibss.last_scan_completed = jiffies;
ieee80211_sta_find_ibss(sdata);
}
- rcu_read_unlock();
+ mutex_unlock(&local->iflist_mtx);
}
ieee80211_rx_result