[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:
Michael Buesch 2006-09-26 13:22:41 -05:00 коммит произвёл John W. Linville
Родитель 51018b0a31
Коммит 3693ec670b
1 изменённых файлов: 1 добавлений и 2 удалений

Просмотреть файл

@ -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);
}