diff options
author | jb <jb@FreeBSD.org> | 2008-08-19 21:28:58 +0000 |
---|---|---|
committer | jb <jb@FreeBSD.org> | 2008-08-19 21:28:58 +0000 |
commit | 10e058a3a20b6ed4f8c0fe21dbadb75ad69ff6b7 (patch) | |
tree | 54a7da37e89758798abb79746e9984528dcfe72d | |
parent | 6b2c2fe045365a47fa81ab8c4137d03dacbcfaae (diff) | |
download | FreeBSD-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.
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c | 2 |
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); |