Commit db7fb86b authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville

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: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 8f7c41d4
...@@ -2570,14 +2570,14 @@ void ieee80211_notify_mac(struct ieee80211_hw *hw, ...@@ -2570,14 +2570,14 @@ void ieee80211_notify_mac(struct ieee80211_hw *hw,
switch (notif_type) { switch (notif_type) {
case IEEE80211_NOTIFY_RE_ASSOC: case IEEE80211_NOTIFY_RE_ASSOC:
rcu_read_lock(); rtnl_lock();
list_for_each_entry_rcu(sdata, &local->interfaces, list) { list_for_each_entry(sdata, &local->interfaces, list) {
if (sdata->vif.type != NL80211_IFTYPE_STATION) if (sdata->vif.type != NL80211_IFTYPE_STATION)
continue; continue;
ieee80211_sta_req_auth(sdata, &sdata->u.sta); ieee80211_sta_req_auth(sdata, &sdata->u.sta);
} }
rcu_read_unlock(); rtnl_unlock();
break; break;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment