summaryrefslogtreecommitdiffstats
path: root/sys/dev/hme
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2005-08-17 17:44:32 +0000
committerjhb <jhb@FreeBSD.org>2005-08-17 17:44:32 +0000
commitdd48b0ad7c3a4439d849fd6a235da746148027e1 (patch)
tree216e7a152ceed2329243d09bd612e26c269c931b /sys/dev/hme
parentf453d156acbb3f93922257bde7e311c1174fd751 (diff)
downloadFreeBSD-src-dd48b0ad7c3a4439d849fd6a235da746148027e1.zip
FreeBSD-src-dd48b0ad7c3a4439d849fd6a235da746148027e1.tar.gz
Add callout_drain()'s to foo_detach() after calling foo_stop() to make sure
that if softclock is running on another CPU and is blocked on our driver lock, we will wait until it has acquired the lock, seen that it was cancelled, dropped the lock, and awakened us so that we can safely destroy the mutex. MFC after: 3 days
Diffstat (limited to 'sys/dev/hme')
-rw-r--r--sys/dev/hme/if_hme.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/dev/hme/if_hme.c b/sys/dev/hme/if_hme.c
index 7033691..8ed71b1 100644
--- a/sys/dev/hme/if_hme.c
+++ b/sys/dev/hme/if_hme.c
@@ -388,6 +388,7 @@ hme_detach(struct hme_softc *sc)
HME_LOCK(sc);
hme_stop(sc);
HME_UNLOCK(sc);
+ callout_drain(&sc->sc_tick_ch);
device_delete_child(sc->sc_dev, sc->sc_miibus);
for (i = 0; i < HME_NTXQ; i++) {
OpenPOWER on IntegriCloud