[PATCH] bcm43xx: fix race condition in periodic work handler
There is a potential race condition in the periodic_work_handler routine of bcm43xx-softmac. In addition to fixing this condition, the size of code is reduced by moving the mutex lock outside the if. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
51018b0a31
commit
3693ec670b
|
@ -3164,12 +3164,12 @@ static void bcm43xx_periodic_work_handler(void *d)
|
|||
u32 savedirqs = 0;
|
||||
int badness;
|
||||
|
||||
mutex_lock(&bcm->mutex);
|
||||
badness = estimate_periodic_work_badness(bcm->periodic_state);
|
||||
if (badness > BADNESS_LIMIT) {
|
||||
/* Periodic work will take a long time, so we want it to
|
||||
* be preemtible.
|
||||
*/
|
||||
mutex_lock(&bcm->mutex);
|
||||
netif_tx_disable(bcm->net_dev);
|
||||
spin_lock_irqsave(&bcm->irq_lock, flags);
|
||||
bcm43xx_mac_suspend(bcm);
|
||||
|
@ -3182,7 +3182,6 @@ static void bcm43xx_periodic_work_handler(void *d)
|
|||
/* Periodic work should take short time, so we want low
|
||||
* locking overhead.
|
||||
*/
|
||||
mutex_lock(&bcm->mutex);
|
||||
spin_lock_irqsave(&bcm->irq_lock, flags);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue