提交 29b4a4f7 编写于 作者: J Johannes Berg 提交者: John W. Linville

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: NJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 0cf4c01e
...@@ -784,14 +784,14 @@ void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local) ...@@ -784,14 +784,14 @@ void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local)
{ {
struct ieee80211_sub_if_data *sdata; struct ieee80211_sub_if_data *sdata;
rcu_read_lock(); mutex_lock(&local->iflist_mtx);
list_for_each_entry_rcu(sdata, &local->interfaces, list) { list_for_each_entry(sdata, &local->interfaces, list) {
if (sdata->vif.type != NL80211_IFTYPE_ADHOC) if (sdata->vif.type != NL80211_IFTYPE_ADHOC)
continue; continue;
sdata->u.ibss.last_scan_completed = jiffies; sdata->u.ibss.last_scan_completed = jiffies;
ieee80211_sta_find_ibss(sdata); ieee80211_sta_find_ibss(sdata);
} }
rcu_read_unlock(); mutex_unlock(&local->iflist_mtx);
} }
ieee80211_rx_result ieee80211_rx_result
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册