Message ID | 1386269683-14079-1-git-send-email-sw@simonwunderlich.de (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Thu, 2013-12-05 at 19:54 +0100, Simon Wunderlich wrote: > 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. Applied. Maybe you can make a hwsim test for this too :) johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c index 0f1fb5d..d09f662 100644 --- a/net/mac80211/ibss.c +++ b/net/mac80211/ibss.c @@ -534,7 +534,7 @@ 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 +559,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;
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> --- net/mac80211/ibss.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)