Module Name:    src
Committed By:   riastradh
Date:           Wed Aug 31 12:34:04 UTC 2022

Modified Files:
        src/external/cddl/osnet/dev/sdt: sdt.c

Log Message:
dtrace_sdt: Fix bug in builtin module reference counting.

Don't module_hold(NULL)!  This mistake was introduced in my attempt
to get dtrace working for sdt probes defined in non-builtin modules
like zfs.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/external/cddl/osnet/dev/sdt/sdt.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/cddl/osnet/dev/sdt/sdt.c
diff -u src/external/cddl/osnet/dev/sdt/sdt.c:1.23 src/external/cddl/osnet/dev/sdt/sdt.c:1.24
--- src/external/cddl/osnet/dev/sdt/sdt.c:1.23	Sun Aug  7 23:42:09 2022
+++ src/external/cddl/osnet/dev/sdt/sdt.c	Wed Aug 31 12:34:04 2022
@@ -39,7 +39,7 @@
  * unloaded; in particular, probes may not span multiple kernel modules.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sdt.c,v 1.23 2022/08/07 23:42:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sdt.c,v 1.24 2022/08/31 12:34:04 riastradh Exp $");
 
 #include <sys/cdefs.h>
 #include <sys/proc.h>
@@ -270,7 +270,8 @@ sdt_enable(void *arg __unused, dtrace_id
 
 	probe->id = id;
 #ifdef __NetBSD__
-	module_hold(&probe->sdtp_lf->lf_mod);
+	if (probe->sdtp_lf)
+		module_hold(&probe->sdtp_lf->lf_mod);
 #endif
 #ifdef __FreeBSD__
 	probe->sdtp_lf->nenabled++;
@@ -286,7 +287,8 @@ sdt_disable(void *arg __unused, dtrace_i
 	struct sdt_probe *probe = parg;
 
 #ifdef __NetBSD__
-	module_rele(&probe->sdtp_lf->lf_mod);
+	if (probe->sdtp_lf)
+		module_rele(&probe->sdtp_lf->lf_mod);
 #endif
 #ifdef __FreeBSD__
 	SDT_KASSERT(probe->sdtp_lf->nenabled > 0, ("no probes enabled"));

Reply via email to