aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVivek Natarajan <vnatarajan@atheros.com>2011-01-27 14:45:10 +0530
committerJohn W. Linville <linville@tuxdriver.com>2011-01-28 15:44:29 -0500
commitbdd62c067d596e2469b243af9887f46e5d47d971 (patch)
treea8839c7610f31b0e39e9e3f2972c24e6379592fc
parentath9k_hw: DDR_PLL and BB_PLL need correct setting. (diff)
downloadlinux-dev-bdd62c067d596e2469b243af9887f46e5d47d971.tar.xz
linux-dev-bdd62c067d596e2469b243af9887f46e5d47d971.zip
ath9k: Fix a locking related issue.
Spin_lock has been tried to be acquired twice from ath9k_tasklet to ath_reset which resulted in a machine freeze. Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/xmit.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 10a3dbefaa09..d211aa7f1a3b 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -563,8 +563,11 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq,
rcu_read_unlock();
- if (needreset)
+ if (needreset) {
+ spin_unlock_bh(&sc->sc_pcu_lock);
ath_reset(sc, false);
+ spin_lock_bh(&sc->sc_pcu_lock);
+ }
}
static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf,