* Re: [Bugme-new] [Bug 13312] New: at76c50x-usb mutex deadlock [not found] <bug-13312-10286@http.bugzilla.kernel.org/> @ 2009-05-28 7:49 ` Andrew Morton 2009-05-28 9:45 ` [PATCH] at76c50x-usb: avoid mutex deadlock in at76_dwork_hw_scan John W. Linville 0 siblings, 1 reply; 3+ messages in thread From: Andrew Morton @ 2009-05-28 7:49 UTC (permalink / raw) To: linux-wireless Cc: bugzilla-daemon, bugme-daemon, Kalle Valo, Jason Andryuk, Johannes Berg, karllinuxtest.relton (switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface). On Thu, 14 May 2009 20:54:54 GMT bugzilla-daemon@bugzilla.kernel.org wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=13312 > > Summary: at76c50x-usb mutex deadlock > Product: Drivers > Version: 2.5 > Kernel Version: 2.6.30-rc5 > Platform: All > OS/Version: Linux > Tree: Mainline > Status: NEW > Severity: normal > Priority: P1 > Component: network-wireless > AssignedTo: drivers_network-wireless@kernel-bugs.osdl.org > ReportedBy: karllinuxtest.relton@ntlworld.com > CC: kalle.valo@iki.fi > Regression: No > > > at76_dwork_hw_scan() does a mutex_lock and then calls > ieee80211_scan_completed(). This in turn calls at76_config() which then tries > to do the same mutex_lock and thus the driver goes into deadlock. > > I believe the solution would be for at76_dwork_hw_scan() to unlock the mutex > before calling ieee80211_scan_completed(). I've tried this with my card, and it > does indeed avoid the lockup - though I have yet to get the card working > properly with this driver. > umm, is anyone looking at drivers_network-wireless@kernel-bugs.osdl.org? This one seems a bit of a no-brainer? ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] at76c50x-usb: avoid mutex deadlock in at76_dwork_hw_scan 2009-05-28 7:49 ` [Bugme-new] [Bug 13312] New: at76c50x-usb mutex deadlock Andrew Morton @ 2009-05-28 9:45 ` John W. Linville 2009-06-01 13:11 ` Kalle Valo 0 siblings, 1 reply; 3+ messages in thread From: John W. Linville @ 2009-05-28 9:45 UTC (permalink / raw) To: linux-wireless Cc: bugzilla-daemon, bugme-daemon, Kalle Valo, Jason Andryuk, Johannes Berg, karllinuxtest.relton, John W. Linville http://bugzilla.kernel.org/show_bug.cgi?id=13312 at76_dwork_hw_scan holds a mutex while calling ieee80211_scan_completed, which then calls at76_config which needs the same mutex. This reworks the ordering to not hold the lock while calling ieee80211_scan_completed. Signed-off-by: John W. Linville <linville@tuxdriver.com> --- drivers/net/wireless/at76c50x-usb.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c index e3caeef..b51281f 100644 --- a/drivers/net/wireless/at76c50x-usb.c +++ b/drivers/net/wireless/at76c50x-usb.c @@ -1873,18 +1873,18 @@ static void at76_dwork_hw_scan(struct work_struct *work) if (ret != CMD_STATUS_COMPLETE) { queue_delayed_work(priv->hw->workqueue, &priv->dwork_hw_scan, SCAN_POLL_INTERVAL); - goto exit; + mutex_unlock(&priv->mtx); + return; } - ieee80211_scan_completed(priv->hw, false); - if (is_valid_ether_addr(priv->bssid)) at76_join(priv); - ieee80211_wake_queues(priv->hw); - -exit: mutex_unlock(&priv->mtx); + + ieee80211_scan_completed(priv->hw, false); + + ieee80211_wake_queues(priv->hw); } static int at76_hw_scan(struct ieee80211_hw *hw, -- 1.6.0.6 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] at76c50x-usb: avoid mutex deadlock in at76_dwork_hw_scan 2009-05-28 9:45 ` [PATCH] at76c50x-usb: avoid mutex deadlock in at76_dwork_hw_scan John W. Linville @ 2009-06-01 13:11 ` Kalle Valo 0 siblings, 0 replies; 3+ messages in thread From: Kalle Valo @ 2009-06-01 13:11 UTC (permalink / raw) To: John W. Linville Cc: linux-wireless, bugzilla-daemon, bugme-daemon, Jason Andryuk, Johannes Berg, karllinuxtest.relton "John W. Linville" <linville@tuxdriver.com> writes: > http://bugzilla.kernel.org/show_bug.cgi?id=13312 > > at76_dwork_hw_scan holds a mutex while calling ieee80211_scan_completed, > which then calls at76_config which needs the same mutex. This reworks > the ordering to not hold the lock while calling ieee80211_scan_completed. > > Signed-off-by: John W. Linville <linville@tuxdriver.com> Thanks. Acked-by: Kalle Valo <kalle.valo@iki.fi> -- Kalle Valo ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-06-01 13:11 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <bug-13312-10286@http.bugzilla.kernel.org/>
2009-05-28 7:49 ` [Bugme-new] [Bug 13312] New: at76c50x-usb mutex deadlock Andrew Morton
2009-05-28 9:45 ` [PATCH] at76c50x-usb: avoid mutex deadlock in at76_dwork_hw_scan John W. Linville
2009-06-01 13:11 ` Kalle Valo
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).