diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/at76c50x-usb.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c index 46ac9e278035..64d4192b5d52 100644 --- a/drivers/net/wireless/at76c50x-usb.c +++ b/drivers/net/wireless/at76c50x-usb.c | |||
@@ -1497,6 +1497,9 @@ static void at76_work_set_promisc(struct work_struct *work) | |||
1497 | work_set_promisc); | 1497 | work_set_promisc); |
1498 | int ret = 0; | 1498 | int ret = 0; |
1499 | 1499 | ||
1500 | if (priv->device_unplugged) | ||
1501 | return; | ||
1502 | |||
1500 | mutex_lock(&priv->mtx); | 1503 | mutex_lock(&priv->mtx); |
1501 | 1504 | ||
1502 | priv->mib_buf.type = MIB_LOCAL; | 1505 | priv->mib_buf.type = MIB_LOCAL; |
@@ -2290,6 +2293,7 @@ static void at76_delete_device(struct at76_priv *priv) | |||
2290 | tasklet_kill(&priv->rx_tasklet); | 2293 | tasklet_kill(&priv->rx_tasklet); |
2291 | 2294 | ||
2292 | if (priv->mac80211_registered) { | 2295 | if (priv->mac80211_registered) { |
2296 | cancel_delayed_work(&priv->dwork_hw_scan); | ||
2293 | flush_workqueue(priv->hw->workqueue); | 2297 | flush_workqueue(priv->hw->workqueue); |
2294 | ieee80211_unregister_hw(priv->hw); | 2298 | ieee80211_unregister_hw(priv->hw); |
2295 | } | 2299 | } |
@@ -2307,6 +2311,8 @@ static void at76_delete_device(struct at76_priv *priv) | |||
2307 | 2311 | ||
2308 | kfree(priv->bulk_out_buffer); | 2312 | kfree(priv->bulk_out_buffer); |
2309 | 2313 | ||
2314 | del_timer_sync(&ledtrig_tx_timer); | ||
2315 | |||
2310 | if (priv->rx_skb) | 2316 | if (priv->rx_skb) |
2311 | kfree_skb(priv->rx_skb); | 2317 | kfree_skb(priv->rx_skb); |
2312 | 2318 | ||