rtl8187: Fix for kernel oops when unloading with LEDs enabled
authorLarry Finger <Larry.Finger@lwfinger.net>
Tue, 14 Jul 2009 20:55:16 +0000 (15:55 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 21 Jul 2009 16:07:42 +0000 (12:07 -0400)
When rtl8187 is unloaded and CONFIG_RTL8187_LEDS is set, the kernel
may oops when the module is unloaded as the workqueue for led_on was
not being cancelled.

This patch fixes the problem reported in
http://marc.info/?l=linux-wireless&m=124742957615781&w=2.

Reported-by: Gábor Stefanik <netrolller.3d@gmail.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rtl818x/rtl8187_leds.c

index b4425359224348c59f15fdb6a9a3031bc232406d..cf9f899fe0e65dc876637db60d87e1e6013a49e7 100644 (file)
@@ -208,11 +208,12 @@ void rtl8187_leds_exit(struct ieee80211_hw *dev)
 {
        struct rtl8187_priv *priv = dev->priv;
 
-       rtl8187_unregister_led(&priv->led_tx);
        /* turn the LED off before exiting */
        queue_delayed_work(dev->workqueue, &priv->led_off, 0);
        cancel_delayed_work_sync(&priv->led_off);
+       cancel_delayed_work_sync(&priv->led_on);
        rtl8187_unregister_led(&priv->led_rx);
+       rtl8187_unregister_led(&priv->led_tx);
 }
 #endif /* def CONFIG_RTL8187_LED */