Forráskód Böngészése

zd1211rw: cancel process_intr work on zd_chip_disable_int()

OOPS if worker is running and disconnect() is called (triggered
by unpluging device). Much harder to trigger at this stage but
later when we have AP beacon work in process_intr it happens very
easy.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Jussi Kivilinna 14 éve
szülő
commit
d741900d40
1 módosított fájl, 3 hozzáadás és 0 törlés
  1. 3 0
      drivers/net/wireless/zd1211rw/zd_chip.c

+ 3 - 0
drivers/net/wireless/zd1211rw/zd_chip.c

@@ -1407,6 +1407,9 @@ void zd_chip_disable_int(struct zd_chip *chip)
 	mutex_lock(&chip->mutex);
 	zd_usb_disable_int(&chip->usb);
 	mutex_unlock(&chip->mutex);
+
+	/* cancel pending interrupt work */
+	cancel_work_sync(&zd_chip_to_mac(chip)->process_intr);
 }
 
 int zd_chip_enable_rxtx(struct zd_chip *chip)