svn commit: r278137 - head/sys/cddl/contrib/opensolaris/uts/common/dtrace
Mark Johnston
markj at FreeBSD.org
Tue Feb 3 06:04:17 UTC 2015
Author: markj
Date: Tue Feb 3 06:04:16 2015
New Revision: 278137
URL: https://svnweb.freebsd.org/changeset/base/278137
Log:
Continue to handle the case where state is NULL, though this currently
cannot happen on FreeBSD. r278136 overlooked the fact that a destructor
registered with devfs_set_cdevpriv(9) is invoked even in the case of an
error.
X-MFC-With: r278136
Modified:
head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Tue Feb 3 05:38:52 2015 (r278136)
+++ head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Tue Feb 3 06:04:16 2015 (r278137)
@@ -14174,7 +14174,7 @@ dtrace_state_create(struct cdev *dev)
if (dev != NULL) {
cr = dev->si_cred;
m = dev2unit(dev);
- }
+ }
/* Allocate memory for the state. */
state = kmem_zalloc(sizeof(dtrace_state_t), KM_SLEEP);
@@ -16841,7 +16841,12 @@ dtrace_dtr(void *data)
mutex_enter(&cpu_lock);
mutex_enter(&dtrace_lock);
- if (state->dts_anon) {
+#ifdef illumos
+ if (state->dts_anon)
+#else
+ if (state != NULL && state->dts_anon)
+#endif
+ {
/*
* There is anonymous state. Destroy that first.
*/
@@ -16849,9 +16854,13 @@ dtrace_dtr(void *data)
dtrace_state_destroy(state->dts_anon);
}
+#ifdef illumos
dtrace_state_destroy(state);
-#ifndef illumos
- kmem_free(state, 0);
+#else
+ if (state == NULL) {
+ dtrace_state_destroy(state);
+ kmem_free(state, 0);
+ }
#endif
ASSERT(dtrace_opens > 0);
More information about the svn-src-all
mailing list