[PATCH 5/8] staging: brcm80211: fix rtnl_lock issue when bringing down brcmfmac
Arend van Spriel
arend at broadcom.com
Tue Aug 23 12:13:57 UTC 2011
When bringing down the netdevice interface a deadlock occurred
sporadically due to the rtnl_lock being held by a task that was
waiting for another task trying to get the lock. This patch fixes
that issue.
Reviewed-by: Franky (Zhenhui) Lin <frankyl at broadcom.com>
Reviewed-by: Roland Vossen <rvossen at broadcom.com>
Signed-off-by: Arend van Spriel <arend at broadcom.com>
---
drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
index 95d6944..f9742b0 100644
--- a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
@@ -3189,7 +3189,14 @@ static void brcmf_term_iscan(struct brcmf_cfg80211_priv *cfg_priv)
if (cfg_priv->iscan_on && iscan->tsk) {
iscan->state = WL_ISCAN_STATE_IDLE;
send_sig(SIGTERM, iscan->tsk, 1);
+
+ /*
+ * The iscan task may want to acquire the rtnl_lock
+ * so release it here upon stopping the task.
+ */
+ rtnl_unlock();
kthread_stop(iscan->tsk);
+ rtnl_lock();
iscan->tsk = NULL;
/* Abort iscan running in FW */
--
1.7.4.1
More information about the devel
mailing list