summaryrefslogtreecommitdiffstats
path: root/sys/cddl
diff options
context:
space:
mode:
authorjb <jb@FreeBSD.org>2008-08-19 21:28:58 +0000
committerjb <jb@FreeBSD.org>2008-08-19 21:28:58 +0000
commit10e058a3a20b6ed4f8c0fe21dbadb75ad69ff6b7 (patch)
tree54a7da37e89758798abb79746e9984528dcfe72d /sys/cddl
parent6b2c2fe045365a47fa81ab8c4137d03dacbcfaae (diff)
downloadFreeBSD-src-10e058a3a20b6ed4f8c0fe21dbadb75ad69ff6b7.zip
FreeBSD-src-10e058a3a20b6ed4f8c0fe21dbadb75ad69ff6b7.tar.gz
Add calls to callout_drain() to ensure the callouts are flushed before
we free memory from underneath them. This fixes an occasional panic I've been seeing in softclock() where a bad pointer would be encountered when pushing DTrace hard.
Diffstat (limited to 'sys/cddl')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
index 7d58b01..2afc602 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
@@ -13616,7 +13616,9 @@ dtrace_state_destroy(dtrace_state_t *state)
cyclic_remove(state->dts_deadman);
#else
callout_stop(&state->dts_cleaner);
+ callout_drain(&state->dts_cleaner);
callout_stop(&state->dts_deadman);
+ callout_drain(&state->dts_deadman);
#endif
dtrace_dstate_fini(&vstate->dtvs_dynvars);
OpenPOWER on IntegriCloud