linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mac80211: fix nested sdata lock for IBSS/CSA
@ 2013-12-05 18:54 Simon Wunderlich
  2013-12-05 19:15 ` Johannes Berg
  0 siblings, 1 reply; 2+ messages in thread
From: Simon Wunderlich @ 2013-12-05 18:54 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, luciano.coelho, Simon Wunderlich

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(-)

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;
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] mac80211: fix nested sdata lock for IBSS/CSA
  2013-12-05 18:54 [PATCH] mac80211: fix nested sdata lock for IBSS/CSA Simon Wunderlich
@ 2013-12-05 19:15 ` Johannes Berg
  0 siblings, 0 replies; 2+ messages in thread
From: Johannes Berg @ 2013-12-05 19:15 UTC (permalink / raw)
  To: Simon Wunderlich; +Cc: linux-wireless, luciano.coelho

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-12-05 19:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-05 18:54 [PATCH] mac80211: fix nested sdata lock for IBSS/CSA Simon Wunderlich
2013-12-05 19:15 ` Johannes Berg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).