diff options
author | Luciano Coelho <luciano.coelho@intel.com> | 2013-12-11 13:39:46 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-12-16 07:38:49 -0500 |
commit | 6f07d216f5662def442cb8034f45119b5a33f6ff (patch) | |
tree | 45e1eda25e453f6ac5f96469dfbaf19c4126b616 | |
parent | 70dabeb74ee3bff71b65f47546dafb83edbb06b9 (diff) |
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>
-rw-r--r-- | net/mac80211/ibss.c | 4 |
1 files changed, 4 insertions, 0 deletions
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) | |||
753 | container_of(work, struct ieee80211_sub_if_data, | 753 | container_of(work, struct ieee80211_sub_if_data, |
754 | u.ibss.csa_connection_drop_work); | 754 | u.ibss.csa_connection_drop_work); |
755 | 755 | ||
756 | sdata_lock(sdata); | ||
757 | |||
756 | ieee80211_ibss_disconnect(sdata); | 758 | ieee80211_ibss_disconnect(sdata); |
757 | synchronize_rcu(); | 759 | synchronize_rcu(); |
758 | skb_queue_purge(&sdata->skb_queue); | 760 | skb_queue_purge(&sdata->skb_queue); |
759 | 761 | ||
760 | /* trigger a scan to find another IBSS network to join */ | 762 | /* trigger a scan to find another IBSS network to join */ |
761 | ieee80211_queue_work(&sdata->local->hw, &sdata->work); | 763 | ieee80211_queue_work(&sdata->local->hw, &sdata->work); |
764 | |||
765 | sdata_unlock(sdata); | ||
762 | } | 766 | } |
763 | 767 | ||
764 | static void ieee80211_ibss_csa_mark_radar(struct ieee80211_sub_if_data *sdata) | 768 | static void ieee80211_ibss_csa_mark_radar(struct ieee80211_sub_if_data *sdata) |