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

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
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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;
	}
}