net: wireless: bcmdhd: Fix watchdog firing in softirq on removal
authorDmitry Shmidt <dimitrysh@google.com>
Thu, 2 Jun 2011 23:08:37 +0000 (16:08 -0700)
committermgross <mark.gross@intel.com>
Wed, 9 Nov 2011 20:08:21 +0000 (12:08 -0800)
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
drivers/net/wireless/bcmdhd/dhd_linux.c

index 3593845..8513fcc 100644 (file)
@@ -2901,9 +2901,6 @@ dhd_bus_detach(dhd_pub_t *dhdp)
                        /* Stop the bus module */
                        dhd_bus_stop(dhd->pub.bus, TRUE);
 
-                       /* Clear the watchdog timer */
-                       dhd->wd_timer_valid = FALSE;
-                       del_timer_sync(&dhd->timer);
 #if defined(OOB_INTR_ONLY)
                        bcmsdh_unregister_oob_intr();
 #endif /* defined(OOB_INTR_ONLY) */
@@ -2985,6 +2982,10 @@ void dhd_detach(dhd_pub_t *dhdp)
        }
        }
 
+       /* Clear the watchdog timer */
+       dhd->wd_timer_valid = FALSE;
+       del_timer_sync(&dhd->timer);
+
        if (dhd->dhd_state & DHD_ATTACH_STATE_THREADS_CREATED) {
 #ifdef DHDTHREAD
                if (dhd->thr_wdt_ctl.thr_pid >= 0) {