diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-11-11 13:28:04 +0300 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-11-13 00:49:53 +0300 |
commit | db7fb86b0ca565cf3537401612581a8158025cc2 (patch) | |
tree | 67da233b8a1958328eb73d39ceecf6fc11c8b30a /net | |
parent | 8f7c41d4cec91cdbfa89b4a77d5a628938875366 (diff) | |
download | linux-db7fb86b0ca565cf3537401612581a8158025cc2.tar.xz |
mac80211: fix notify_mac function
The ieee80211_notify_mac() function uses ieee80211_sta_req_auth() which
in turn calls ieee80211_set_disassoc() which calls a few functions that
need to be able to sleep, so ieee80211_notify_mac() cannot use RCU
locking for the interface list and must use rtnl locking instead.
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/mlme.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 87665d7bb4f9..14d165f0df75 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -2570,14 +2570,14 @@ void ieee80211_notify_mac(struct ieee80211_hw *hw, switch (notif_type) { case IEEE80211_NOTIFY_RE_ASSOC: - rcu_read_lock(); - list_for_each_entry_rcu(sdata, &local->interfaces, list) { + rtnl_lock(); + list_for_each_entry(sdata, &local->interfaces, list) { if (sdata->vif.type != NL80211_IFTYPE_STATION) continue; ieee80211_sta_req_auth(sdata, &sdata->u.sta); } - rcu_read_unlock(); + rtnl_unlock(); break; } } |