aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/twa
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2010-08-30 21:33:33 +0000
committerXin LI <delphij@FreeBSD.org>2010-08-30 21:33:33 +0000
commit08390ba4c9709314bb37c26806e2520a96b790bb (patch)
tree3f7990a70b1abac2c9ea3451e7826ec49db48884 /sys/dev/twa
parenta4703857ff47b53af55a43534cb76abd7235d760 (diff)
downloadsrc-08390ba4c9709314bb37c26806e2520a96b790bb.tar.gz
src-08390ba4c9709314bb37c26806e2520a96b790bb.zip
Drain watchdog callouts before detaching. This prevents a panic while
unloading the kernel module. Submitted by: Tom Cough
Notes
Notes: svn path=/head/; revision=212028
Diffstat (limited to 'sys/dev/twa')
-rw-r--r--sys/dev/twa/tw_osl_freebsd.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/twa/tw_osl_freebsd.c b/sys/dev/twa/tw_osl_freebsd.c
index 5cb25bd98470..3b7b426a6285 100644
--- a/sys/dev/twa/tw_osl_freebsd.c
+++ b/sys/dev/twa/tw_osl_freebsd.c
@@ -903,6 +903,10 @@ twa_shutdown(device_t dev)
/* Disconnect interrupts. */
error = twa_teardown_intr(sc);
+ /* Stop watchdog task. */
+ callout_drain(&(sc->watchdog_callout[0]));
+ callout_drain(&(sc->watchdog_callout[1]));
+
/* Disconnect from the controller. */
if ((error = tw_cl_shutdown_ctlr(&(sc->ctlr_handle), 0))) {
tw_osli_printf(sc, "error = %d",