diff options
author | Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2011-01-31 19:47:17 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-02-04 22:29:48 +0100 |
commit | d741900d404b3a34bf478673f76ee9f16dad3f90 (patch) | |
tree | 24915e11f002efffc97acce19cd4d68711c742fb /drivers/net | |
parent | zd1211rw: use urb anchors for tx and fix tx-queue disabling (diff) | |
download | linux-d741900d404b3a34bf478673f76ee9f16dad3f90.tar.xz linux-d741900d404b3a34bf478673f76ee9f16dad3f90.zip |
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>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_chip.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_chip.c b/drivers/net/wireless/zd1211rw/zd_chip.c index 6a9b66051cf7..b644ced848e7 100644 --- a/drivers/net/wireless/zd1211rw/zd_chip.c +++ b/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) |