mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-16 01:04:08 +08:00
ath5k: fix locking in tx_complete_poll_work
ath5k_reset must be called with sc->lock. Since the tx queue watchdog runs in a workqueue and accesses sc, it's appropriate to just take the lock over the whole function. Signed-off-by: Bob Copeland <me@bobcopeland.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
811ea256b3
commit
599b13adc2
@ -2294,6 +2294,8 @@ ath5k_tx_complete_poll_work(struct work_struct *work)
|
||||
int i;
|
||||
bool needreset = false;
|
||||
|
||||
mutex_lock(&sc->lock);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sc->txqs); i++) {
|
||||
if (sc->txqs[i].setup) {
|
||||
txq = &sc->txqs[i];
|
||||
@ -2321,6 +2323,8 @@ ath5k_tx_complete_poll_work(struct work_struct *work)
|
||||
ath5k_reset(sc, NULL, true);
|
||||
}
|
||||
|
||||
mutex_unlock(&sc->lock);
|
||||
|
||||
ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work,
|
||||
msecs_to_jiffies(ATH5K_TX_COMPLETE_POLL_INT));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user