diff options
author | Simon Wunderlich <sw@simonwunderlich.de> | 2013-12-05 19:54:43 +0100 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-12-05 20:15:19 +0100 |
commit | bafdc614a1f4f8be8cde41b8ab10ac17e67c1837 (patch) | |
tree | 4b0d14116017f33ddeffe2aee7a92cd3e4508fe8 | |
parent | cfg80211: don't "leak" uncompleted scans (diff) | |
download | linux-bafdc614a1f4f8be8cde41b8ab10ac17e67c1837.tar.xz linux-bafdc614a1f4f8be8cde41b8ab10ac17e67c1837.zip |
mac80211: fix nested sdata lock for IBSS/CSA
This fixes a regression introduced by my patch "mac80211: don't cancel
csa finalize work within stop_ap", which added sdata locks to
ieee80211_csa_finalize_work() without removing the locking for
ieee80211_ibss_finish_csa(), which is called by the former, resulting
in a deadlock due to nested locking.
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | net/mac80211/ibss.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c index 0f1fb5db4bdb..df21e4f79df8 100644 --- a/net/mac80211/ibss.c +++ b/net/mac80211/ibss.c @@ -534,7 +534,8 @@ int ieee80211_ibss_finish_csa(struct ieee80211_sub_if_data *sdata) int err; u16 capability; - sdata_lock(sdata); + sdata_assert_lock(sdata); + /* update cfg80211 bss information with the new channel */ if (!is_zero_ether_addr(ifibss->bssid)) { capability = WLAN_CAPABILITY_IBSS; @@ -559,7 +560,6 @@ int ieee80211_ibss_finish_csa(struct ieee80211_sub_if_data *sdata) /* generate the beacon */ err = ieee80211_ibss_csa_beacon(sdata, NULL); - sdata_unlock(sdata); if (err < 0) return err; |