mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-19 20:34:20 +08:00
mac80211: lock sdata in ieee80211_csa_connection_drop_work()
We call ieee80211_ibss_disconnect(), which requires sdata to be locked, so lock the sdata during ieee80211_csa_connection_drop_work(). Cc: Simon Wunderlich <sw@simonwunderlich.de> Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
70dabeb74e
commit
6f07d216f5
@ -753,12 +753,16 @@ static void ieee80211_csa_connection_drop_work(struct work_struct *work)
|
|||||||
container_of(work, struct ieee80211_sub_if_data,
|
container_of(work, struct ieee80211_sub_if_data,
|
||||||
u.ibss.csa_connection_drop_work);
|
u.ibss.csa_connection_drop_work);
|
||||||
|
|
||||||
|
sdata_lock(sdata);
|
||||||
|
|
||||||
ieee80211_ibss_disconnect(sdata);
|
ieee80211_ibss_disconnect(sdata);
|
||||||
synchronize_rcu();
|
synchronize_rcu();
|
||||||
skb_queue_purge(&sdata->skb_queue);
|
skb_queue_purge(&sdata->skb_queue);
|
||||||
|
|
||||||
/* trigger a scan to find another IBSS network to join */
|
/* trigger a scan to find another IBSS network to join */
|
||||||
ieee80211_queue_work(&sdata->local->hw, &sdata->work);
|
ieee80211_queue_work(&sdata->local->hw, &sdata->work);
|
||||||
|
|
||||||
|
sdata_unlock(sdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ieee80211_ibss_csa_mark_radar(struct ieee80211_sub_if_data *sdata)
|
static void ieee80211_ibss_csa_mark_radar(struct ieee80211_sub_if_data *sdata)
|
||||||
|
Loading…
Reference in New Issue
Block a user