From 99d8c6efbd0ddad9c35c5ee2c20bdcd6113ea288 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Thu, 3 Jul 2014 19:25:24 +0000 Subject: [PATCH] Merge from OpenSolaris (30-Jun-2009): 6851093 system drops to kmdb with anonymous dtrace probes + kmdb This has no effect on FreeBSD (code is ifdef'ed) but is useful as reference for future merges. MFC after: 1 week --- sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c index 3f8284bf2b5..d796e307590 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c +++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c @@ -16750,7 +16750,7 @@ dtrace_open(struct cdev *dev, int oflags, int devtype, struct thread *td) if (state == NULL) { #if defined(sun) - if (--dtrace_opens == 0) + if (--dtrace_opens == 0 && dtrace_anon.dta_enabling == NULL) (void) kdi_dtrace_set(KDI_DTSET_DTRACE_DEACTIVATE); #else --dtrace_opens; @@ -16806,7 +16806,11 @@ dtrace_dtr(void *data) ASSERT(dtrace_opens > 0); #if defined(sun) - if (--dtrace_opens == 0) + /* + * Only relinquish control of the kernel debugger interface when there + * are no consumers and no anonymous enablings. + */ + if (--dtrace_opens == 0 && dtrace_anon.dta_enabling == NULL) (void) kdi_dtrace_set(KDI_DTSET_DTRACE_DEACTIVATE); #else --dtrace_opens;