From: Luciano Coelho Date: Wed, 11 Dec 2013 18:39:46 +0000 (+0200) Subject: mac80211: lock sdata in ieee80211_csa_connection_drop_work() X-Git-Tag: firefly_0821_release~176^2~4570^2~3^2^2~193 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6f07d216f5662def442cb8034f45119b5a33f6ff;p=firefly-linux-kernel-4.4.55.git 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 Signed-off-by: Luciano Coelho Signed-off-by: Johannes Berg --- diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c index e97fa7fac96e..a6ca56dfe0d7 100644 --- a/net/mac80211/ibss.c +++ b/net/mac80211/ibss.c @@ -753,12 +753,16 @@ static void ieee80211_csa_connection_drop_work(struct work_struct *work) container_of(work, struct ieee80211_sub_if_data, u.ibss.csa_connection_drop_work); + sdata_lock(sdata); + ieee80211_ibss_disconnect(sdata); synchronize_rcu(); skb_queue_purge(&sdata->skb_queue); /* trigger a scan to find another IBSS network to join */ ieee80211_queue_work(&sdata->local->hw, &sdata->work); + + sdata_unlock(sdata); } static void ieee80211_ibss_csa_mark_radar(struct ieee80211_sub_if_data *sdata)