From 569556b633a65ae8da99f4a8447c806c8da22928 Mon Sep 17 00:00:00 2001 From: Kyle Evans Date: Thu, 24 Jan 2019 03:49:11 +0000 Subject: [PATCH] iwm - Fix race during detach, where a callout is left after driver is gone. Submitted by: Augustin Cavalier (Haiku) Obtained from: DragonFlyBSD (ba3b4ff9a1fc04a349df05d6d3449f4d9b15c4be) --- sys/dev/iwm/if_iwm.c | 3 +++ sys/dev/iwm/if_iwm_led.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/sys/dev/iwm/if_iwm.c b/sys/dev/iwm/if_iwm.c index 805e791689cb..d23c6379f2f0 100644 --- a/sys/dev/iwm/if_iwm.c +++ b/sys/dev/iwm/if_iwm.c @@ -4829,6 +4829,9 @@ iwm_watchdog(void *arg) struct iwm_softc *sc = arg; struct ieee80211com *ic = &sc->sc_ic; + if (sc->sc_attached == 0) + return; + if (sc->sc_tx_timer > 0) { if (--sc->sc_tx_timer == 0) { device_printf(sc->sc_dev, "device timeout\n"); diff --git a/sys/dev/iwm/if_iwm_led.c b/sys/dev/iwm/if_iwm_led.c index 1114d4ef8cee..f22dd5d3b492 100644 --- a/sys/dev/iwm/if_iwm_led.c +++ b/sys/dev/iwm/if_iwm_led.c @@ -162,6 +162,9 @@ iwm_led_blink_timeout(void *arg) { struct iwm_softc *sc = arg; + if (sc->sc_attached == 0) + return; + if (iwm_mvm_led_is_enabled(sc)) iwm_mvm_led_disable(sc); else