Module Name:    src
Committed By:   pgoyette
Date:           Mon Mar 16 21:20:13 UTC 2020

Modified Files:
        src/sys/compat/linux/common: linux_mod.c linux_sysctl.c linux_sysctl.h
        src/sys/compat/linux32/common: linux32_mod.c linux32_sysctl.c
            linux32_sysctl.h
        src/sys/dev/acpi: acpi_cpu.c
        src/sys/dev/pci: ubsec.c
        src/sys/dev/sysmon: swsensor.c swwdog.c
        src/sys/fs/adosfs: advfsops.c
        src/sys/fs/autofs: autofs_vfsops.c
        src/sys/fs/cd9660: cd9660_vfsops.c
        src/sys/fs/filecorefs: filecore_vfsops.c
        src/sys/fs/msdosfs: msdosfs_vfsops.c
        src/sys/fs/nilfs: nilfs_vfsops.c
        src/sys/fs/ptyfs: ptyfs_vfsops.c
        src/sys/fs/smbfs: smbfs_vfsops.c
        src/sys/fs/udf: udf_vfsops.c
        src/sys/fs/union: union_vfsops.c
        src/sys/kern: sys_aio.c sys_mqueue.c vfs_wapbl.c
        src/sys/miscfs/fdesc: fdesc_vfsops.c
        src/sys/miscfs/kernfs: kernfs_vfsops.c
        src/sys/miscfs/nullfs: null_vfsops.c
        src/sys/miscfs/overlay: overlay_vfsops.c
        src/sys/miscfs/procfs: procfs_vfsops.c
        src/sys/miscfs/umapfs: umap_vfsops.c
        src/sys/net: bpf.c
        src/sys/netinet: accf_http.c
        src/sys/nfs: nfs_vfsops.c
        src/sys/opencrypto: crypto.c
        src/sys/secmodel/bsd44: bsd44.h secmodel_bsd44.c
        src/sys/secmodel/extensions: secmodel_extensions.c
        src/sys/secmodel/overlay: secmodel_overlay.c
        src/sys/secmodel/securelevel: secmodel_securelevel.c securelevel.h
        src/sys/secmodel/suser: secmodel_suser.c suser.h
        src/sys/ufs/ext2fs: ext2fs_vfsops.c
        src/sys/ufs/ffs: ffs_vfsops.c
        src/sys/ufs/lfs: lfs_vfsops.c
        src/sys/ufs/mfs: mfs_vfsops.c
        src/sys/ufs/ufs: ufs_dirhash.c

Log Message:
Use the module subsystem's ability to process SYSCTL_SETUP() entries to
automate installation of sysctl nodes.

Note that there are still a number of device and pseudo-device modules
that create entries tied to individual device units, rather than to the
module itself.  These are not changed.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/compat/linux/common/linux_mod.c
cvs rdiff -u -r1.44 -r1.45 src/sys/compat/linux/common/linux_sysctl.c
cvs rdiff -u -r1.6 -r1.7 src/sys/compat/linux/common/linux_sysctl.h
cvs rdiff -u -r1.12 -r1.13 src/sys/compat/linux32/common/linux32_mod.c
cvs rdiff -u -r1.17 -r1.18 src/sys/compat/linux32/common/linux32_sysctl.c
cvs rdiff -u -r1.4 -r1.5 src/sys/compat/linux32/common/linux32_sysctl.h
cvs rdiff -u -r1.51 -r1.52 src/sys/dev/acpi/acpi_cpu.c
cvs rdiff -u -r1.47 -r1.48 src/sys/dev/pci/ubsec.c
cvs rdiff -u -r1.15 -r1.16 src/sys/dev/sysmon/swsensor.c
cvs rdiff -u -r1.21 -r1.22 src/sys/dev/sysmon/swwdog.c
cvs rdiff -u -r1.78 -r1.79 src/sys/fs/adosfs/advfsops.c
cvs rdiff -u -r1.9 -r1.10 src/sys/fs/autofs/autofs_vfsops.c
cvs rdiff -u -r1.94 -r1.95 src/sys/fs/cd9660/cd9660_vfsops.c
cvs rdiff -u -r1.82 -r1.83 src/sys/fs/filecorefs/filecore_vfsops.c
cvs rdiff -u -r1.132 -r1.133 src/sys/fs/msdosfs/msdosfs_vfsops.c
cvs rdiff -u -r1.25 -r1.26 src/sys/fs/nilfs/nilfs_vfsops.c
cvs rdiff -u -r1.57 -r1.58 src/sys/fs/ptyfs/ptyfs_vfsops.c
cvs rdiff -u -r1.108 -r1.109 src/sys/fs/smbfs/smbfs_vfsops.c
cvs rdiff -u -r1.77 -r1.78 src/sys/fs/udf/udf_vfsops.c
cvs rdiff -u -r1.80 -r1.81 src/sys/fs/union/union_vfsops.c
cvs rdiff -u -r1.46 -r1.47 src/sys/kern/sys_aio.c
cvs rdiff -u -r1.45 -r1.46 src/sys/kern/sys_mqueue.c
cvs rdiff -u -r1.105 -r1.106 src/sys/kern/vfs_wapbl.c
cvs rdiff -u -r1.93 -r1.94 src/sys/miscfs/fdesc/fdesc_vfsops.c
cvs rdiff -u -r1.98 -r1.99 src/sys/miscfs/kernfs/kernfs_vfsops.c
cvs rdiff -u -r1.96 -r1.97 src/sys/miscfs/nullfs/null_vfsops.c
cvs rdiff -u -r1.68 -r1.69 src/sys/miscfs/overlay/overlay_vfsops.c
cvs rdiff -u -r1.102 -r1.103 src/sys/miscfs/procfs/procfs_vfsops.c
cvs rdiff -u -r1.101 -r1.102 src/sys/miscfs/umapfs/umap_vfsops.c
cvs rdiff -u -r1.235 -r1.236 src/sys/net/bpf.c
cvs rdiff -u -r1.9 -r1.10 src/sys/netinet/accf_http.c
cvs rdiff -u -r1.239 -r1.240 src/sys/nfs/nfs_vfsops.c
cvs rdiff -u -r1.112 -r1.113 src/sys/opencrypto/crypto.c
cvs rdiff -u -r1.6 -r1.7 src/sys/secmodel/bsd44/bsd44.h
cvs rdiff -u -r1.16 -r1.17 src/sys/secmodel/bsd44/secmodel_bsd44.c
cvs rdiff -u -r1.11 -r1.12 src/sys/secmodel/extensions/secmodel_extensions.c
cvs rdiff -u -r1.13 -r1.14 src/sys/secmodel/overlay/secmodel_overlay.c
cvs rdiff -u -r1.33 -r1.34 \
    src/sys/secmodel/securelevel/secmodel_securelevel.c
cvs rdiff -u -r1.4 -r1.5 src/sys/secmodel/securelevel/securelevel.h
cvs rdiff -u -r1.51 -r1.52 src/sys/secmodel/suser/secmodel_suser.c
cvs rdiff -u -r1.2 -r1.3 src/sys/secmodel/suser/suser.h
cvs rdiff -u -r1.216 -r1.217 src/sys/ufs/ext2fs/ext2fs_vfsops.c
cvs rdiff -u -r1.365 -r1.366 src/sys/ufs/ffs/ffs_vfsops.c
cvs rdiff -u -r1.376 -r1.377 src/sys/ufs/lfs/lfs_vfsops.c
cvs rdiff -u -r1.113 -r1.114 src/sys/ufs/mfs/mfs_vfsops.c
cvs rdiff -u -r1.39 -r1.40 src/sys/ufs/ufs/ufs_dirhash.c

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

Modified files:

Index: src/sys/compat/linux/common/linux_mod.c
diff -u src/sys/compat/linux/common/linux_mod.c:1.11 src/sys/compat/linux/common/linux_mod.c:1.12
--- src/sys/compat/linux/common/linux_mod.c:1.11	Sun Jan 27 02:08:40 2019
+++ src/sys/compat/linux/common/linux_mod.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_mod.c,v 1.11 2019/01/27 02:08:40 pgoyette Exp $	*/
+/*	$NetBSD: linux_mod.c,v 1.12 2020/03/16 21:20:09 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_mod.c,v 1.11 2019/01/27 02:08:40 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_mod.c,v 1.12 2020/03/16 21:20:09 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_execfmt.h"
@@ -164,17 +164,13 @@ compat_linux_modcmd(modcmd_t cmd, void *
 	switch (cmd) {
 	case MODULE_CMD_INIT:
 		linux_futex_init();
-		linux_sysctl_init();
 		error = exec_add(linux_execsw, __arraycount(linux_execsw));
-		if (error != 0) 	 
-			linux_sysctl_fini();
 		return error;
 
 	case MODULE_CMD_FINI:
 		error = exec_remove(linux_execsw, __arraycount(linux_execsw));
 		if (error)
 			return error;
-		linux_sysctl_fini();
 		linux_futex_fini();
 		return 0;
 

Index: src/sys/compat/linux/common/linux_sysctl.c
diff -u src/sys/compat/linux/common/linux_sysctl.c:1.44 src/sys/compat/linux/common/linux_sysctl.c:1.45
--- src/sys/compat/linux/common/linux_sysctl.c:1.44	Fri Sep 29 17:08:00 2017
+++ src/sys/compat/linux/common/linux_sysctl.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_sysctl.c,v 1.44 2017/09/29 17:08:00 maxv Exp $	*/
+/*	$NetBSD: linux_sysctl.c,v 1.45 2020/03/16 21:20:09 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2003, 2008 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_sysctl.c,v 1.44 2017/09/29 17:08:00 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_sysctl.c,v 1.45 2020/03/16 21:20:09 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -68,73 +68,61 @@ struct sysctlnode linux_sysctl_root = {
 	.sysctl_size = sizeof(struct sysctlnode),
 };
 
-static struct sysctllog *linux_clog1;
-static struct sysctllog *linux_clog2;
 extern int linux_enabled;
 
-void
-linux_sysctl_fini(void)
-{
-
-	sysctl_teardown(&linux_clog2);
-	sysctl_teardown(&linux_clog1);
-	sysctl_free(&linux_sysctl_root);
-}
-
-void
-linux_sysctl_init(void)
+SYSCTL_SETUP(linux_sysctl_setup, "linux emulation sysctls")
 {
 	const struct sysctlnode *node = &linux_sysctl_root;
 
-	sysctl_createv(&linux_clog1, 0, &node, &node,
+	sysctl_createv(clog, 0, &node, &node,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "kern", NULL,
 		       NULL, 0, NULL, 0,
 		       LINUX_CTL_KERN, CTL_EOL);
-	sysctl_createv(&linux_clog1, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_STRING, "ostype", NULL,
 		       NULL, 0, linux_sysname, sizeof(linux_sysname),
 		       LINUX_KERN_OSTYPE, CTL_EOL);
-	sysctl_createv(&linux_clog1, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_STRING, "osrelease", NULL,
 		       NULL, 0, linux_release, sizeof(linux_release),
 		       LINUX_KERN_OSRELEASE, CTL_EOL);
-	sysctl_createv(&linux_clog1, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_STRING, "version", NULL,
 		       NULL, 0, linux_version, sizeof(linux_version),
 		       LINUX_KERN_VERSION, CTL_EOL);
 
-	sysctl_createv(&linux_clog2, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "linux",
 		       SYSCTL_DESCR("Linux emulation settings"),
 		       NULL, 0, NULL, 0,
 		       CTL_EMUL, EMUL_LINUX, CTL_EOL);
 
-	sysctl_createv(&linux_clog2, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "kern",
 		       SYSCTL_DESCR("Linux kernel emulation settings"),
 		       NULL, 0, NULL, 0,
 		       CTL_EMUL, EMUL_LINUX, EMUL_LINUX_KERN, CTL_EOL);
-	sysctl_createv(&linux_clog2, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_STRING, "ostype",
 		       SYSCTL_DESCR("Linux operating system type"),
 		       NULL, 0, linux_sysname, sizeof(linux_sysname),
 		       CTL_EMUL, EMUL_LINUX, EMUL_LINUX_KERN,
 		       EMUL_LINUX_KERN_OSTYPE, CTL_EOL);
-	sysctl_createv(&linux_clog2, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_STRING, "osrelease",
 		       SYSCTL_DESCR("Linux operating system release"),
 		       NULL, 0, linux_release, sizeof(linux_release),
 		       CTL_EMUL, EMUL_LINUX, EMUL_LINUX_KERN,
 		       EMUL_LINUX_KERN_OSRELEASE, CTL_EOL);
-	sysctl_createv(&linux_clog2, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_STRING, "osversion",
 		       SYSCTL_DESCR("Linux operating system revision"),
@@ -142,7 +130,7 @@ linux_sysctl_init(void)
 		       CTL_EMUL, EMUL_LINUX, EMUL_LINUX_KERN,
 		       EMUL_LINUX_KERN_VERSION, CTL_EOL);
 
-	sysctl_createv(&linux_clog2, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "enabled",
 		       SYSCTL_DESCR("Linux compat enabled."),

Index: src/sys/compat/linux/common/linux_sysctl.h
diff -u src/sys/compat/linux/common/linux_sysctl.h:1.6 src/sys/compat/linux/common/linux_sysctl.h:1.7
--- src/sys/compat/linux/common/linux_sysctl.h:1.6	Fri Sep 29 17:08:00 2017
+++ src/sys/compat/linux/common/linux_sysctl.h	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_sysctl.h,v 1.6 2017/09/29 17:08:00 maxv Exp $	*/
+/*	$NetBSD: linux_sysctl.h,v 1.7 2020/03/16 21:20:09 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -466,9 +466,6 @@
 #define	LINUX_BUS_ISA_PORT_BASE					2
 #define	LINUX_BUS_ISA_PORT_SHIFT				3
 
-void	linux_sysctl_init(void);
-void	linux_sysctl_fini(void);
-
 int	linux_sysctl_enable(SYSCTLFN_PROTO);
 
 #endif /* !_LINUX_SYSCTL_H */

Index: src/sys/compat/linux32/common/linux32_mod.c
diff -u src/sys/compat/linux32/common/linux32_mod.c:1.12 src/sys/compat/linux32/common/linux32_mod.c:1.13
--- src/sys/compat/linux32/common/linux32_mod.c:1.12	Sun Jan 27 02:08:40 2019
+++ src/sys/compat/linux32/common/linux32_mod.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux32_mod.c,v 1.12 2019/01/27 02:08:40 pgoyette Exp $	*/
+/*	$NetBSD: linux32_mod.c,v 1.13 2020/03/16 21:20:09 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux32_mod.c,v 1.12 2019/01/27 02:08:40 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux32_mod.c,v 1.13 2020/03/16 21:20:09 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_execfmt.h"
@@ -124,10 +124,7 @@ compat_linux32_modcmd(modcmd_t cmd, void
 
 	switch (cmd) {
 	case MODULE_CMD_INIT:
-		linux32_sysctl_init();
 		error = exec_add(linux32_execsw, __arraycount(linux32_execsw));
-		if (error != 0) 	 
-			linux32_sysctl_fini(); 	 
 		return error;
 
 	case MODULE_CMD_FINI:
@@ -135,7 +132,6 @@ compat_linux32_modcmd(modcmd_t cmd, void
 		    exec_remove(linux32_execsw, __arraycount(linux32_execsw));
 		if (error)
 			return error;
-		linux32_sysctl_fini();
 		return 0;
 
 	default:

Index: src/sys/compat/linux32/common/linux32_sysctl.c
diff -u src/sys/compat/linux32/common/linux32_sysctl.c:1.17 src/sys/compat/linux32/common/linux32_sysctl.c:1.18
--- src/sys/compat/linux32/common/linux32_sysctl.c:1.17	Fri Sep 29 17:47:29 2017
+++ src/sys/compat/linux32/common/linux32_sysctl.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux32_sysctl.c,v 1.17 2017/09/29 17:47:29 maxv Exp $ */
+/*	$NetBSD: linux32_sysctl.c,v 1.18 2020/03/16 21:20:09 pgoyette Exp $ */
 
 /*-
  * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved.
@@ -31,7 +31,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux32_sysctl.c,v 1.17 2017/09/29 17:47:29 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux32_sysctl.c,v 1.18 2020/03/16 21:20:09 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -68,82 +68,70 @@ struct sysctlnode linux32_sysctl_root = 
 	.sysctl_size = sizeof(struct sysctlnode),
 };
 
-static struct sysctllog *linux32_clog1;
-static struct sysctllog *linux32_clog2;
 extern int linux32_enabled;
 
-void
-linux32_sysctl_fini(void)
-{
-
-	sysctl_teardown(&linux32_clog2);
-	sysctl_teardown(&linux32_clog1);
-	sysctl_free(&linux32_sysctl_root);
-}
-
-void
-linux32_sysctl_init(void)
+SYSCTL_SETUP(linux32_sysctl_init, "linux32 emulation sysctls")
 {
 	const struct sysctlnode *node = &linux32_sysctl_root;
 
-	sysctl_createv(&linux32_clog1, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "linux32",
 		       SYSCTL_DESCR("Linux 32 bit emulation settings"),
 		       NULL, 0, NULL, 0,
 		       CTL_EMUL, EMUL_LINUX32, CTL_EOL);
-	sysctl_createv(&linux32_clog1, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "kern",
 		       SYSCTL_DESCR("Linux 32 bit kernel emulation settings"),
 		       NULL, 0, NULL, 0,
 		       CTL_EMUL, EMUL_LINUX32, EMUL_LINUX32_KERN, CTL_EOL);
 
-	sysctl_createv(&linux32_clog1, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_STRING, "ostype",
 		       SYSCTL_DESCR("Linux 32 bit operating system type"),
 		       NULL, 0, linux32_sysname, sizeof(linux32_sysname),
 		       CTL_EMUL, EMUL_LINUX32, EMUL_LINUX32_KERN,
 		       EMUL_LINUX32_KERN_OSTYPE, CTL_EOL);
-	sysctl_createv(&linux32_clog1, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_STRING, "osrelease",
 		       SYSCTL_DESCR("Linux 32 bit operating system release"),
 		       NULL, 0, linux32_release, sizeof(linux32_release),
 		       CTL_EMUL, EMUL_LINUX32, EMUL_LINUX32_KERN,
 		       EMUL_LINUX32_KERN_OSRELEASE, CTL_EOL);
-	sysctl_createv(&linux32_clog1, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_STRING, "osversion",
 		       SYSCTL_DESCR("Linux 32 bit operating system revision"),
 		       NULL, 0, linux32_version, sizeof(linux32_version),
 		       CTL_EMUL, EMUL_LINUX32, EMUL_LINUX32_KERN,
 		       EMUL_LINUX32_KERN_VERSION, CTL_EOL);
-	sysctl_createv(&linux32_clog1, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "enabled",
 		       SYSCTL_DESCR("Linux 32 bit compat enabled."),
 		       linux32_sysctl_enable, 0, &linux32_enabled, 0,
 		       CTL_EMUL, EMUL_LINUX32, CTL_CREATE, CTL_EOL);
 
-	sysctl_createv(&linux32_clog2, 0, &node, &node,
+	sysctl_createv(clog, 0, &node, &node,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "kern", NULL,
 		       NULL, 0, NULL, 0,
 		       LINUX_CTL_KERN, CTL_EOL);
 
-	sysctl_createv(&linux32_clog2, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_STRING, "ostype", NULL,
 		       NULL, 0, linux32_sysname, sizeof(linux32_sysname),
 		       LINUX_KERN_OSTYPE, CTL_EOL);
-	sysctl_createv(&linux32_clog2, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_STRING, "osrelease", NULL,
 		       NULL, 0, linux32_release, sizeof(linux32_release),
 		       LINUX_KERN_OSRELEASE, CTL_EOL);
-	sysctl_createv(&linux32_clog2, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_STRING, "version", NULL,
 		       NULL, 0, linux32_version, sizeof(linux32_version),

Index: src/sys/compat/linux32/common/linux32_sysctl.h
diff -u src/sys/compat/linux32/common/linux32_sysctl.h:1.4 src/sys/compat/linux32/common/linux32_sysctl.h:1.5
--- src/sys/compat/linux32/common/linux32_sysctl.h:1.4	Wed Aug 22 01:05:23 2018
+++ src/sys/compat/linux32/common/linux32_sysctl.h	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux32_sysctl.h,v 1.4 2018/08/22 01:05:23 msaitoh Exp $ */
+/*	$NetBSD: linux32_sysctl.h,v 1.5 2020/03/16 21:20:09 pgoyette Exp $ */
 
 /*-
  * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved.
@@ -44,9 +44,6 @@ extern char linux32_version[];
 #define EMUL_LINUX32_KERN_OSRELEASE	2
 #define EMUL_LINUX32_KERN_VERSION	3
 
-void	linux32_sysctl_init(void);
-void	linux32_sysctl_fini(void);
-
 int	linux32_sysctl_enable(SYSCTLFN_PROTO);
 
 #endif /* !_LINUX32_SYSCTL_H */

Index: src/sys/dev/acpi/acpi_cpu.c
diff -u src/sys/dev/acpi/acpi_cpu.c:1.51 src/sys/dev/acpi/acpi_cpu.c:1.52
--- src/sys/dev/acpi/acpi_cpu.c:1.51	Thu Jun  1 02:45:09 2017
+++ src/sys/dev/acpi/acpi_cpu.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_cpu.c,v 1.51 2017/06/01 02:45:09 chs Exp $ */
+/* $NetBSD: acpi_cpu.c,v 1.52 2020/03/16 21:20:09 pgoyette Exp $ */
 
 /*-
  * Copyright (c) 2010, 2011 Jukka Ruohonen <jruoho...@iki.fi>
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_cpu.c,v 1.51 2017/06/01 02:45:09 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_cpu.c,v 1.52 2020/03/16 21:20:09 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -55,7 +55,6 @@ static int		  acpicpu_detach(device_t, i
 static int		  acpicpu_once_attach(void);
 static int		  acpicpu_once_detach(void);
 static void		  acpicpu_start(device_t);
-static void		  acpicpu_sysctl(device_t);
 
 static ACPI_STATUS	  acpicpu_object(ACPI_HANDLE, struct acpicpu_object *);
 static uint32_t		  acpicpu_cap(struct acpicpu_softc *);
@@ -73,7 +72,6 @@ static const char	 *acpicpu_debug_print_
 
 static uint32_t		  acpicpu_count = 0;
 struct acpicpu_softc	**acpicpu_sc = NULL;
-static struct sysctllog	 *acpicpu_log = NULL;
 static bool		  acpicpu_dynamic = true;
 static bool		  acpicpu_passive = true;
 
@@ -234,7 +232,6 @@ acpicpu_once_attach(void)
 		return 0;
 
 	KASSERT(acpicpu_sc == NULL);
-	KASSERT(acpicpu_log == NULL);
 
 	acpicpu_sc = kmem_zalloc(maxcpus * sizeof(*sc), KM_SLEEP);
 
@@ -254,9 +251,6 @@ acpicpu_once_detach(void)
 
 	cpufreq_deregister();
 
-	if (acpicpu_log != NULL)
-		sysctl_teardown(&acpicpu_log);
-
 	if (acpicpu_sc != NULL)
 		kmem_free(acpicpu_sc, maxcpus * sizeof(*sc));
 
@@ -296,7 +290,6 @@ acpicpu_start(device_t self)
 	if ((sc->sc_flags & ACPICPU_FLAG_T) != 0)
 		acpicpu_tstate_start(self);
 
-	acpicpu_sysctl(self);
 	aprint_debug_dev(self, "ACPI CPUs started\n");
 
 	/*
@@ -328,29 +321,26 @@ acpicpu_start(device_t self)
 	}
 }
 
-static void
-acpicpu_sysctl(device_t self)
+SYSCTL_SETUP(acpicpu_sysctl, "acpi_cpu sysctls")
 {
 	const struct sysctlnode *node;
 	int err;
 
-	KASSERT(acpicpu_log == NULL);
-
-	err = sysctl_createv(&acpicpu_log, 0, NULL, &node,
+	err = sysctl_createv(clog, 0, NULL, &node,
 	    CTLFLAG_PERMANENT, CTLTYPE_NODE, "acpi", NULL,
 	    NULL, 0, NULL, 0, CTL_HW, CTL_CREATE, CTL_EOL);
 
 	if (err != 0)
 		goto fail;
 
-	err = sysctl_createv(&acpicpu_log, 0, &node, &node,
+	err = sysctl_createv(clog, 0, &node, &node,
 	    0, CTLTYPE_NODE, "cpu", SYSCTL_DESCR("ACPI CPU"),
 	    NULL, 0, NULL, 0, CTL_CREATE, CTL_EOL);
 
 	if (err != 0)
 		goto fail;
 
-	err = sysctl_createv(&acpicpu_log, 0, &node, NULL,
+	err = sysctl_createv(clog, 0, &node, NULL,
 	    CTLFLAG_READWRITE, CTLTYPE_BOOL, "dynamic",
 	    SYSCTL_DESCR("Dynamic states"), NULL, 0,
 	    &acpicpu_dynamic, 0, CTL_CREATE, CTL_EOL);
@@ -358,7 +348,7 @@ acpicpu_sysctl(device_t self)
 	if (err != 0)
 		goto fail;
 
-	err = sysctl_createv(&acpicpu_log, 0, &node, NULL,
+	err = sysctl_createv(clog, 0, &node, NULL,
 	    CTLFLAG_READWRITE, CTLTYPE_BOOL, "passive",
 	    SYSCTL_DESCR("Passive cooling"), NULL, 0,
 	    &acpicpu_passive, 0, CTL_CREATE, CTL_EOL);
@@ -369,7 +359,7 @@ acpicpu_sysctl(device_t self)
 	return;
 
 fail:
-	aprint_error_dev(self, "failed to initialize sysctl (err %d)\n", err);
+	aprint_error("%s: failed to init sysctl (err %d)\n", __func__, err);
 }
 
 static ACPI_STATUS

Index: src/sys/dev/pci/ubsec.c
diff -u src/sys/dev/pci/ubsec.c:1.47 src/sys/dev/pci/ubsec.c:1.48
--- src/sys/dev/pci/ubsec.c:1.47	Sun Nov 10 21:16:36 2019
+++ src/sys/dev/pci/ubsec.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ubsec.c,v 1.47 2019/11/10 21:16:36 chs Exp $	*/
+/*	$NetBSD: ubsec.c,v 1.48 2020/03/16 21:20:09 pgoyette Exp $	*/
 /* $FreeBSD: src/sys/dev/ubsec/ubsec.c,v 1.6.2.6 2003/01/23 21:06:43 sam Exp $ */
 /*	$OpenBSD: ubsec.c,v 1.143 2009/03/27 13:31:30 reyk Exp$	*/
 
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1.47 2019/11/10 21:16:36 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1.48 2020/03/16 21:20:09 pgoyette Exp $");
 
 #undef UBSEC_DEBUG
 
@@ -87,7 +87,6 @@ __KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1.
 static	int  ubsec_probe(device_t, cfdata_t, void *);
 static	void ubsec_attach(device_t, device_t, void *);
 static	int  ubsec_detach(device_t, int);
-static	int  ubsec_sysctl_init(void);
 static	void ubsec_reset_board(struct ubsec_softc *);
 static	void ubsec_init_board(struct ubsec_softc *);
 static	void ubsec_init_pciregs(struct pci_attach_args *pa);
@@ -166,8 +165,6 @@ static	void	ubsec_dump_ctx2(volatile str
 
 struct ubsec_stats ubsecstats;
 
-static struct sysctllog *ubsec_sysctllog;
-
 /*
  * ubsec_maxbatch controls the number of crypto ops to voluntarily
  * collect into one submission to the hardware.  This batching happens
@@ -617,12 +614,8 @@ ubsec_modcmd(modcmd_t cmd, void *data)
 		error = config_init_component(cfdriver_ioconf_ubsec,
 		    cfattach_ioconf_ubsec, cfdata_ioconf_ubsec);
 #endif
-		if (error == 0)
-			error = ubsec_sysctl_init();
 		return error;
 	case MODULE_CMD_FINI:
-		if (ubsec_sysctllog != NULL)
-			sysctl_teardown(&ubsec_sysctllog);
 #ifdef _MODULE
 		error = config_fini_component(cfdriver_ioconf_ubsec,
 		    cfattach_ioconf_ubsec, cfdata_ioconf_ubsec);
@@ -633,33 +626,30 @@ ubsec_modcmd(modcmd_t cmd, void *data)
 	}
 }
 
-static int
-ubsec_sysctl_init(void)
+SYSCTL_SETUP(ubsec_sysctl_init, "ubsec sysctl")
 {
 	const struct sysctlnode *node = NULL;
 
-	ubsec_sysctllog = NULL;
-
-	sysctl_createv(&ubsec_sysctllog, 0, NULL, &node,
+	sysctl_createv(clog, 0, NULL, &node,
 		CTLFLAG_PERMANENT,
 		CTLTYPE_NODE, "ubsec", 
 		SYSCTL_DESCR("ubsec opetions"),
 		NULL, 0, NULL, 0,
 		CTL_HW, CTL_CREATE, CTL_EOL);
-	sysctl_createv(&ubsec_sysctllog, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 		CTLTYPE_INT, "maxbatch",
 		SYSCTL_DESCR("max ops to batch w/o interrupt"),
 		NULL, 0, &ubsec_maxbatch, 0,
 		CTL_CREATE, CTL_EOL);
-	sysctl_createv(&ubsec_sysctllog, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 		CTLTYPE_INT, "maxaggr",
 		SYSCTL_DESCR("max ops to aggregate under one interrupt"),
 		NULL, 0, &ubsec_maxaggr, 0,
 		CTL_CREATE, CTL_EOL);
 
-	return 0;
+	return;
 }
 
 /*

Index: src/sys/dev/sysmon/swsensor.c
diff -u src/sys/dev/sysmon/swsensor.c:1.15 src/sys/dev/sysmon/swsensor.c:1.16
--- src/sys/dev/sysmon/swsensor.c:1.15	Sat Apr 25 23:55:23 2015
+++ src/sys/dev/sysmon/swsensor.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: swsensor.c,v 1.15 2015/04/25 23:55:23 pgoyette Exp $ */
+/*	$NetBSD: swsensor.c,v 1.16 2020/03/16 21:20:09 pgoyette Exp $ */
 /*
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: swsensor.c,v 1.15 2015/04/25 23:55:23 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: swsensor.c,v 1.16 2020/03/16 21:20:09 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -45,8 +45,6 @@ __KERNEL_RCSID(0, "$NetBSD: swsensor.c,v
 
 int swsensorattach(int);
 
-static struct sysctllog *swsensor_sysctllog = NULL;
-
 static int sensor_value_sysctl = 0;
 static int sensor_state_sysctl = 0;
 
@@ -66,18 +64,14 @@ MODULE(MODULE_CLASS_DRIVER, swsensor, "s
  * Set-up the sysctl interface for setting the sensor's cur_value
  */
 
-static
-void
-sysctl_swsensor_setup(void)
+SYSCTL_SETUP(sysctl_swsensor_setup, "swsensor sysctl")
 {
 	int ret;
 	int node_sysctl_num;
 	const struct sysctlnode *me = NULL;
 	const struct sysctlnode *me2;
 
-	KASSERT(swsensor_sysctllog == NULL);
-
-	ret = sysctl_createv(&swsensor_sysctllog, 0, NULL, &me,
+	ret = sysctl_createv(clog, 0, NULL, &me,
 			     CTLFLAG_READWRITE,
 			     CTLTYPE_NODE, "swsensor", NULL,
 			     NULL, 0, NULL, 0,
@@ -86,7 +80,7 @@ sysctl_swsensor_setup(void)
 		return;
 
 	node_sysctl_num = me->sysctl_num;
-	ret = sysctl_createv(&swsensor_sysctllog, 0, NULL, &me2,
+	ret = sysctl_createv(clog, 0, NULL, &me2,
 			     CTLFLAG_READWRITE,
 			     CTLTYPE_INT, "cur_value", NULL,
 			     NULL, 0, &sw_sensor_value, 0,
@@ -96,7 +90,7 @@ sysctl_swsensor_setup(void)
 		sensor_value_sysctl = me2->sysctl_num;
 
 	node_sysctl_num = me->sysctl_num;
-	ret = sysctl_createv(&swsensor_sysctllog, 0, NULL, &me2,
+	ret = sysctl_createv(clog, 0, NULL, &me2,
 			     CTLFLAG_READWRITE,
 			     CTLTYPE_INT, "state", NULL,
 			     NULL, 0, &sw_sensor_state, 0,
@@ -352,7 +346,6 @@ swsensor_init(void *arg)
 		return error;
 	}
 
-	sysctl_swsensor_setup();
 	aprint_normal("swsensor: initialized\n");
 
 	return 0;
@@ -365,8 +358,6 @@ swsensor_fini(void *arg)
 
 	sysmon_envsys_unregister(swsensor_sme);
 
-	sysctl_teardown(&swsensor_sysctllog);
-
 	return 0;
 }
 

Index: src/sys/dev/sysmon/swwdog.c
diff -u src/sys/dev/sysmon/swwdog.c:1.21 src/sys/dev/sysmon/swwdog.c:1.22
--- src/sys/dev/sysmon/swwdog.c:1.21	Wed Jan  1 22:57:17 2020
+++ src/sys/dev/sysmon/swwdog.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: swwdog.c,v 1.21 2020/01/01 22:57:17 thorpej Exp $	*/
+/*	$NetBSD: swwdog.c,v 1.22 2020/03/16 21:20:09 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 2004, 2005 Steven M. Bellovin
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: swwdog.c,v 1.21 2020/01/01 22:57:17 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: swwdog.c,v 1.22 2020/03/16 21:20:09 pgoyette Exp $");
 
 /*
  *
@@ -85,9 +85,6 @@ static int	swwdog_disarm(struct swwdog_s
 
 static void	swwdog_panic(void *);
 
-static void	swwdog_sysctl_setup(void);
-static struct sysctllog *swwdog_sysctllog = NULL;
-
 static int	swwdog_match(device_t, cfdata_t, void *);
 static void	swwdog_attach(device_t, device_t, void *);
 static int	swwdog_detach(device_t, int);
@@ -181,8 +178,6 @@ swwdog_attach(device_t parent, device_t 
 
 	if (!pmf_device_register(self, swwdog_suspend, NULL))
 		aprint_error_dev(self, "couldn't establish power handler\n");
-
-	swwdog_sysctl_setup();
 }
 
 static int
@@ -192,7 +187,6 @@ swwdog_detach(device_t self, int flags)
 
 	pmf_device_deregister(self);
 	swwdog_disarm(sc);
-	sysctl_teardown(&swwdog_sysctllog);
 	sysmon_wdog_unregister(&sc->sc_smw);
 	callout_destroy(&sc->sc_c);
 	workqueue_destroy(wq);
@@ -274,18 +268,15 @@ swwdog_panic(void *vsc)
 		workqueue_enqueue(wq, &wk, NULL);
 }
 
-static void
-swwdog_sysctl_setup(void)
+SYSCTL_SETUP(swwdog_sysctl_setup, "swwdog sysctl")
 {
 	const struct sysctlnode *me;
 
-	KASSERT(swwdog_sysctllog == NULL);
-
-	sysctl_createv(&swwdog_sysctllog, 0, NULL, &me, CTLFLAG_READWRITE,
+	sysctl_createv(clog, 0, NULL, &me, CTLFLAG_READWRITE,
 	    CTLTYPE_NODE, "swwdog", NULL,
 	    NULL, 0, NULL, 0,
 	    CTL_HW, CTL_CREATE, CTL_EOL);
-	sysctl_createv(&swwdog_sysctllog, 0, NULL, NULL, CTLFLAG_READWRITE,
+	sysctl_createv(clog, 0, NULL, NULL, CTLFLAG_READWRITE,
 	    CTLTYPE_BOOL, "reboot", "reboot if timer expires",
 	    NULL, 0, &swwdog_reboot, sizeof(bool),
 	    CTL_HW, me->sysctl_num, CTL_CREATE, CTL_EOL);

Index: src/sys/fs/adosfs/advfsops.c
diff -u src/sys/fs/adosfs/advfsops.c:1.78 src/sys/fs/adosfs/advfsops.c:1.79
--- src/sys/fs/adosfs/advfsops.c:1.78	Fri Jan 17 20:08:07 2020
+++ src/sys/fs/adosfs/advfsops.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: advfsops.c,v 1.78 2020/01/17 20:08:07 ad Exp $	*/
+/*	$NetBSD: advfsops.c,v 1.79 2020/03/16 21:20:09 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1994 Christian E. Hopps
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: advfsops.c,v 1.78 2020/01/17 20:08:07 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: advfsops.c,v 1.79 2020/03/16 21:20:09 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -65,8 +65,6 @@ MODULE(MODULE_CLASS_VFS, adosfs, NULL);
 
 VFS_PROTOS(adosfs);
 
-static struct sysctllog *adosfs_sysctl_log;
-
 int adosfs_mountfs(struct vnode *, struct mount *, struct lwp *);
 int adosfs_loadbitmap(struct adosfsmount *);
 
@@ -812,6 +810,15 @@ struct vfsops adosfs_vfsops = {
 	.vfs_opv_descs = adosfs_vnodeopv_descs
 };
 
+SYSCTL_SETUP(adosfs_sysctl_setup, "adosfs sysctl")
+{	sysctl_createv(clog, 0, NULL, NULL,
+	       CTLFLAG_PERMANENT,
+	       CTLTYPE_NODE, "adosfs",
+	       SYSCTL_DESCR("AmigaDOS file system"),
+	       NULL, 0, NULL, 0,
+	       CTL_VFS, 16, CTL_EOL);
+}
+
 static int
 adosfs_modcmd(modcmd_t cmd, void *arg)
 {
@@ -822,12 +829,6 @@ adosfs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&adosfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&adosfs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "adosfs",
-			       SYSCTL_DESCR("AmigaDOS file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 16, CTL_EOL);
 		/*
 		 * XXX the "16" above could be dynamic, thereby eliminating
 		 * one more instance of the "number to vfs" mapping problem,
@@ -838,7 +839,6 @@ adosfs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_detach(&adosfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&adosfs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/fs/autofs/autofs_vfsops.c
diff -u src/sys/fs/autofs/autofs_vfsops.c:1.9 src/sys/fs/autofs/autofs_vfsops.c:1.10
--- src/sys/fs/autofs/autofs_vfsops.c:1.9	Fri Jan 17 20:08:07 2020
+++ src/sys/fs/autofs/autofs_vfsops.c	Mon Mar 16 21:20:09 2020
@@ -33,7 +33,7 @@
  *
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: autofs_vfsops.c,v 1.9 2020/01/17 20:08:07 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: autofs_vfsops.c,v 1.10 2020/03/16 21:20:09 pgoyette Exp $");
 
 
 #include "autofs.h"
@@ -46,7 +46,6 @@ __KERNEL_RCSID(0, "$NetBSD: autofs_vfsop
 MODULE(MODULE_CLASS_VFS, autofs, NULL);
 
 static int	autofs_statvfs(struct mount *, struct statvfs *);
-static int	autofs_sysctl_create(void);
 
 static void
 autofs_init(void)
@@ -66,7 +65,6 @@ autofs_init(void)
 	mutex_init(&autofs_softc->sc_lock, MUTEX_DEFAULT, IPL_NONE);
 	autofs_softc->sc_dev_opened = false;
 
-	autofs_sysctl_create();
 	workqueue_create(&autofs_tmo_wq, "autofstmo",
 	    autofs_timeout_wq, NULL, 0, 0, WQ_MPSAFE);
 }
@@ -375,10 +373,7 @@ static struct vfsops autofs_vfsops = {
 #define AUTOFS_SYSCTL_RETRY_DELAY	6
 #define AUTOFS_SYSCTL_INTERRUPTIBLE	7
 
-static struct sysctllog *autofs_sysctl_log;
-
-static int
-autofs_sysctl_create(void)
+SYSCTL_SETUP(autofs_sysctl_create, "autofs sysctl")
 {
 	int error;
 
@@ -387,7 +382,7 @@ autofs_sysctl_create(void)
 	 * more instance of the "number to vfs" mapping problem, but
 	 * "33" is the order as taken from sys/mount.h
 	 */
-	error = sysctl_createv(&autofs_sysctl_log, 0, NULL, NULL,
+	error = sysctl_createv(clog, 0, NULL, NULL,
 	    CTLFLAG_PERMANENT,
 	    CTLTYPE_NODE, "autofs",
 	    SYSCTL_DESCR("Automounter filesystem"),
@@ -396,7 +391,7 @@ autofs_sysctl_create(void)
 	if (error)
 		goto fail;
 
-	error = sysctl_createv(&autofs_sysctl_log, 0, NULL, NULL,
+	error = sysctl_createv(clog, 0, NULL, NULL,
 	    CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 	    CTLTYPE_INT, "autofs_debug",
 	    SYSCTL_DESCR("Enable debug messages"),
@@ -405,7 +400,7 @@ autofs_sysctl_create(void)
 	if (error)
 		goto fail;
 
-	error = sysctl_createv(&autofs_sysctl_log, 0, NULL, NULL,
+	error = sysctl_createv(clog, 0, NULL, NULL,
 	    CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 	    CTLTYPE_INT, "autofs_mount_on_stat",
 	    SYSCTL_DESCR("Trigger mount on stat(2) on mountpoint"),
@@ -414,7 +409,7 @@ autofs_sysctl_create(void)
 	if (error)
 		goto fail;
 
-	error = sysctl_createv(&autofs_sysctl_log, 0, NULL, NULL,
+	error = sysctl_createv(clog, 0, NULL, NULL,
 	    CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 	    CTLTYPE_INT, "autofs_timeout",
 	    SYSCTL_DESCR("Number of seconds to wait for automountd(8)"),
@@ -423,7 +418,7 @@ autofs_sysctl_create(void)
 	if (error)
 		goto fail;
 
-	error = sysctl_createv(&autofs_sysctl_log, 0, NULL, NULL,
+	error = sysctl_createv(clog, 0, NULL, NULL,
 	    CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 	    CTLTYPE_INT, "autofs_cache",
 	    SYSCTL_DESCR("Number of seconds to wait before reinvoking"),
@@ -432,7 +427,7 @@ autofs_sysctl_create(void)
 	if (error)
 		goto fail;
 
-	error = sysctl_createv(&autofs_sysctl_log, 0, NULL, NULL,
+	error = sysctl_createv(clog, 0, NULL, NULL,
 	    CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 	    CTLTYPE_INT, "autofs_retry_attempts",
 	    SYSCTL_DESCR("Number of attempts before failing mount"),
@@ -441,7 +436,7 @@ autofs_sysctl_create(void)
 	if (error)
 		goto fail;
 
-	error = sysctl_createv(&autofs_sysctl_log, 0, NULL, NULL,
+	error = sysctl_createv(clog, 0, NULL, NULL,
 	    CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 	    CTLTYPE_INT, "autofs_retry_delay",
 	    SYSCTL_DESCR("Number of seconds before retrying"),
@@ -450,7 +445,7 @@ autofs_sysctl_create(void)
 	if (error)
 		goto fail;
 
-	error = sysctl_createv(&autofs_sysctl_log, 0, NULL, NULL,
+	error = sysctl_createv(clog, 0, NULL, NULL,
 	    CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 	    CTLTYPE_INT, "autofs_interruptible",
 	    SYSCTL_DESCR("Allow requests to be interrupted by signal"),
@@ -459,11 +454,11 @@ autofs_sysctl_create(void)
 	if (error)
 		goto fail;
 
-	return 0;
+	return;
 fail:
 	AUTOFS_WARN("sysctl_createv failed with error %d", error);
 
-	return error;
+	return;
 }
 
 extern const struct cdevsw autofs_cdevsw;

Index: src/sys/fs/cd9660/cd9660_vfsops.c
diff -u src/sys/fs/cd9660/cd9660_vfsops.c:1.94 src/sys/fs/cd9660/cd9660_vfsops.c:1.95
--- src/sys/fs/cd9660/cd9660_vfsops.c:1.94	Fri Jan 17 20:08:07 2020
+++ src/sys/fs/cd9660/cd9660_vfsops.c	Mon Mar 16 21:20:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd9660_vfsops.c,v 1.94 2020/01/17 20:08:07 ad Exp $	*/
+/*	$NetBSD: cd9660_vfsops.c,v 1.95 2020/03/16 21:20:09 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1994
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cd9660_vfsops.c,v 1.94 2020/01/17 20:08:07 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cd9660_vfsops.c,v 1.95 2020/03/16 21:20:09 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -78,8 +78,6 @@ MODULE(MODULE_CLASS_VFS, cd9660, NULL);
 
 MALLOC_JUSTDEFINE(M_ISOFSMNT, "ISOFS mount", "ISOFS mount structure");
 
-static struct sysctllog *cd9660_sysctl_log;
-
 extern const struct vnodeopv_desc cd9660_vnodeop_opv_desc;
 extern const struct vnodeopv_desc cd9660_specop_opv_desc;
 extern const struct vnodeopv_desc cd9660_fifoop_opv_desc;
@@ -131,22 +129,15 @@ static int iso_makemp(struct iso_mnt *is
 static int iso_mountfs(struct vnode *devvp, struct mount *mp,
 		struct lwp *l, struct iso_args *argp);
 
-static int
-cd9660_modcmd(modcmd_t cmd, void *arg)
+SYSCTL_SETUP(cd9660_sysctl_setup, "cd9660 sysctl")
 {
-	int error;
 
-	switch (cmd) {
-	case MODULE_CMD_INIT:
-		error = vfs_attach(&cd9660_vfsops);
-		if (error != 0)
-			break;
-		sysctl_createv(&cd9660_sysctl_log, 0, NULL, NULL,
+		sysctl_createv(clog, 0, NULL, NULL,
 			       CTLFLAG_PERMANENT, CTLTYPE_NODE, "cd9660",
 			       SYSCTL_DESCR("ISO-9660 file system"),
 			       NULL, 0, NULL, 0,
 			       CTL_VFS, 14, CTL_EOL);
-		sysctl_createv(&cd9660_sysctl_log, 0, NULL, NULL,
+		sysctl_createv(clog, 0, NULL, NULL,
 			       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 			       CTLTYPE_INT, "utf8_joliet",
 			       SYSCTL_DESCR("Encode Joliet filenames to UTF-8"),
@@ -157,12 +148,23 @@ cd9660_modcmd(modcmd_t cmd, void *arg)
 		 * one more instance of the "number to vfs" mapping problem,
 		 * but "14" is the order as taken from sys/mount.h
 		 */
+}
+
+static int
+cd9660_modcmd(modcmd_t cmd, void *arg)
+{
+	int error;
+
+	switch (cmd) {
+	case MODULE_CMD_INIT:
+		error = vfs_attach(&cd9660_vfsops);
+		if (error != 0)
+			break;
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&cd9660_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&cd9660_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/fs/filecorefs/filecore_vfsops.c
diff -u src/sys/fs/filecorefs/filecore_vfsops.c:1.82 src/sys/fs/filecorefs/filecore_vfsops.c:1.83
--- src/sys/fs/filecorefs/filecore_vfsops.c:1.82	Fri Jan 17 20:08:07 2020
+++ src/sys/fs/filecorefs/filecore_vfsops.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: filecore_vfsops.c,v 1.82 2020/01/17 20:08:07 ad Exp $	*/
+/*	$NetBSD: filecore_vfsops.c,v 1.83 2020/03/16 21:20:10 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1994 The Regents of the University of California.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: filecore_vfsops.c,v 1.82 2020/01/17 20:08:07 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: filecore_vfsops.c,v 1.83 2020/03/16 21:20:10 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -97,8 +97,6 @@ __KERNEL_RCSID(0, "$NetBSD: filecore_vfs
 
 MODULE(MODULE_CLASS_VFS, filecore, NULL);
 
-static struct sysctllog *filecore_sysctl_log;
-
 extern const struct vnodeopv_desc filecore_vnodeop_opv_desc;
 
 const struct vnodeopv_desc * const filecore_vnodeopv_descs[] = {
@@ -132,6 +130,22 @@ struct vfsops filecore_vfsops = {
 	.vfs_opv_descs = filecore_vnodeopv_descs
 };
 
+SYSCTL_SETUP(filecore_sysctl_setup, "filecore fs sysctl")
+{
+
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "filecore",
+		       SYSCTL_DESCR("Acorn FILECORE file system"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 19, CTL_EOL);
+	/*
+	 * XXX the "19" above could be dynamic, thereby eliminating
+	 * one more instance of the "number to vfs" mapping problem,
+	 * but "19" is the order as taken from sys/mount.h
+	 */
+}
+
 static int
 filecore_modcmd(modcmd_t cmd, void *arg)
 {
@@ -142,23 +156,11 @@ filecore_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&filecore_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&filecore_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "filecore",
-			       SYSCTL_DESCR("Acorn FILECORE file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 19, CTL_EOL);
-		/*
-		 * XXX the "19" above could be dynamic, thereby eliminating
-		 * one more instance of the "number to vfs" mapping problem,
-		 * but "19" is the order as taken from sys/mount.h
-		 */
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&filecore_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&filecore_sysctl_log);	
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/fs/msdosfs/msdosfs_vfsops.c
diff -u src/sys/fs/msdosfs/msdosfs_vfsops.c:1.132 src/sys/fs/msdosfs/msdosfs_vfsops.c:1.133
--- src/sys/fs/msdosfs/msdosfs_vfsops.c:1.132	Thu Feb 27 22:12:53 2020
+++ src/sys/fs/msdosfs/msdosfs_vfsops.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: msdosfs_vfsops.c,v 1.132 2020/02/27 22:12:53 ad Exp $	*/
+/*	$NetBSD: msdosfs_vfsops.c,v 1.133 2020/03/16 21:20:10 pgoyette Exp $	*/
 
 /*-
  * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msdosfs_vfsops.c,v 1.132 2020/02/27 22:12:53 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_vfsops.c,v 1.133 2020/03/16 21:20:10 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -106,8 +106,6 @@ MALLOC_JUSTDEFINE(M_MSDOSFSMNT, "MSDOSFS
 MALLOC_JUSTDEFINE(M_MSDOSFSFAT, "MSDOSFS FAT", "MSDOS FS FAT table");
 MALLOC_JUSTDEFINE(M_MSDOSFSTMP, "MSDOSFS temp", "MSDOS FS temp. structures");
 
-static struct sysctllog *msdosfs_sysctl_log;
-
 extern const struct vnodeopv_desc msdosfs_vnodeop_opv_desc;
 
 const struct vnodeopv_desc * const msdosfs_vnodeopv_descs[] = {
@@ -142,6 +140,21 @@ struct vfsops msdosfs_vfsops = {
 	.vfs_opv_descs = msdosfs_vnodeopv_descs
 };
 
+SYSCTL_SETUP(msdosfs_sysctl_setup, "msdosfs sysctl")
+{
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "msdosfs",
+		       SYSCTL_DESCR("MS-DOS file system"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 4, CTL_EOL);
+	/*
+	 * XXX the "4" above could be dynamic, thereby eliminating one
+	 * more instance of the "number to vfs" mapping problem, but
+	 * "4" is the order as taken from sys/mount.h
+	 */
+}
+
 static int
 msdos_modcmd(modcmd_t cmd, void *arg)
 {
@@ -152,23 +165,11 @@ msdos_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&msdosfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&msdosfs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "msdosfs",
-			       SYSCTL_DESCR("MS-DOS file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 4, CTL_EOL);
-		/*
-		 * XXX the "4" above could be dynamic, thereby eliminating one
-		 * more instance of the "number to vfs" mapping problem, but
-		 * "4" is the order as taken from sys/mount.h
-		 */
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&msdosfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&msdosfs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/fs/nilfs/nilfs_vfsops.c
diff -u src/sys/fs/nilfs/nilfs_vfsops.c:1.25 src/sys/fs/nilfs/nilfs_vfsops.c:1.26
--- src/sys/fs/nilfs/nilfs_vfsops.c:1.25	Fri Jan 17 20:08:07 2020
+++ src/sys/fs/nilfs/nilfs_vfsops.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: nilfs_vfsops.c,v 1.25 2020/01/17 20:08:07 ad Exp $ */
+/* $NetBSD: nilfs_vfsops.c,v 1.26 2020/03/16 21:20:10 pgoyette Exp $ */
 
 /*
  * Copyright (c) 2008, 2009 Reinoud Zandijk
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__KERNEL_RCSID(0, "$NetBSD: nilfs_vfsops.c,v 1.25 2020/01/17 20:08:07 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nilfs_vfsops.c,v 1.26 2020/03/16 21:20:10 pgoyette Exp $");
 #endif /* not lint */
 
 
@@ -80,7 +80,6 @@ struct pool nilfs_node_pool;
 
 /* globals */
 struct _nilfs_devices nilfs_devices;
-static struct sysctllog *nilfs_sysctl_log;
 
 /* supported functions predefined */
 VFS_PROTOS(nilfs);
@@ -235,10 +234,34 @@ nilfs_done(void)
  */
 #define NILFS_VERBOSE_SYSCTLOPT        1
 
+SYSCTL_SETUP(nilfs_sysctl_setup, "nilfs sysctl")
+{
+	const struct sysctlnode *node;
+
+	/*
+	 * XXX the "30" below could be dynamic, thereby eliminating one
+	 * more instance of the "number to vfs" mapping problem, but
+	 * "30" is the order as taken from sys/mount.h
+	 */
+	sysctl_createv(clog, 0, NULL, &node,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "nilfs",
+		       SYSCTL_DESCR("NTT's NILFSv2"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 30, CTL_EOL);
+#ifdef DEBUG
+	sysctl_createv(clog, 0, NULL, &node,
+		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+		       CTLTYPE_INT, "verbose",
+		       SYSCTL_DESCR("Bitmask for filesystem debugging"),
+		       NULL, 0, &nilfs_verbose, 0,
+		       CTL_VFS, 30, NILFS_VERBOSE_SYSCTLOPT, CTL_EOL);
+#endif
+}
+
 static int
 nilfs_modcmd(modcmd_t cmd, void *arg)
 {
-	const struct sysctlnode *node;
 	int error;
 
 	switch (cmd) {
@@ -246,31 +269,11 @@ nilfs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&nilfs_vfsops);
 		if (error != 0)
 			break;
-		/*
-		 * XXX the "30" below could be dynamic, thereby eliminating one
-		 * more instance of the "number to vfs" mapping problem, but
-		 * "30" is the order as taken from sys/mount.h
-		 */
-		sysctl_createv(&nilfs_sysctl_log, 0, NULL, &node,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "nilfs",
-			       SYSCTL_DESCR("NTT's NILFSv2"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 30, CTL_EOL);
-#ifdef DEBUG
-		sysctl_createv(&nilfs_sysctl_log, 0, NULL, &node,
-			       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
-			       CTLTYPE_INT, "verbose",
-			       SYSCTL_DESCR("Bitmask for filesystem debugging"),
-			       NULL, 0, &nilfs_verbose, 0,
-			       CTL_VFS, 30, NILFS_VERBOSE_SYSCTLOPT, CTL_EOL);
-#endif
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&nilfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&nilfs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/fs/ptyfs/ptyfs_vfsops.c
diff -u src/sys/fs/ptyfs/ptyfs_vfsops.c:1.57 src/sys/fs/ptyfs/ptyfs_vfsops.c:1.58
--- src/sys/fs/ptyfs/ptyfs_vfsops.c:1.57	Fri Jan 17 20:08:08 2020
+++ src/sys/fs/ptyfs/ptyfs_vfsops.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ptyfs_vfsops.c,v 1.57 2020/01/17 20:08:08 ad Exp $	*/
+/*	$NetBSD: ptyfs_vfsops.c,v 1.58 2020/03/16 21:20:10 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993, 1995
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ptyfs_vfsops.c,v 1.57 2020/01/17 20:08:08 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ptyfs_vfsops.c,v 1.58 2020/03/16 21:20:10 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -70,8 +70,6 @@ MALLOC_JUSTDEFINE(M_PTYFSTMP, "ptyfs tem
 
 VFS_PROTOS(ptyfs);
 
-static struct sysctllog *ptyfs_sysctl_log;
-
 static int ptyfs__allocvp(struct mount *, struct lwp *, struct vnode **,
     dev_t, char);
 static int ptyfs__makename(struct mount *, struct lwp *, char *, size_t,
@@ -499,6 +497,22 @@ struct vfsops ptyfs_vfsops = {
 	.vfs_opv_descs = ptyfs_vnodeopv_descs
 };
 
+SYSCTL_SETUP(ptyfs_sysctl_setup, "ptyfs sysctl")
+{
+
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "ptyfs",
+		       SYSCTL_DESCR("Pty file system"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 23, CTL_EOL);
+	/*
+	 * XXX the "23" above could be dynamic, thereby eliminating
+	 * one more instance of the "number to vfs" mapping problem,
+	 * but "23" is the order as taken from sys/mount.h
+	 */
+}
+
 static int
 ptyfs_modcmd(modcmd_t cmd, void *arg)
 {
@@ -509,23 +523,11 @@ ptyfs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&ptyfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&ptyfs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "ptyfs",
-			       SYSCTL_DESCR("Pty file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 23, CTL_EOL);
-		/*
-		 * XXX the "23" above could be dynamic, thereby eliminating
-		 * one more instance of the "number to vfs" mapping problem,
-		 * but "23" is the order as taken from sys/mount.h
-		 */
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&ptyfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&ptyfs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/fs/smbfs/smbfs_vfsops.c
diff -u src/sys/fs/smbfs/smbfs_vfsops.c:1.108 src/sys/fs/smbfs/smbfs_vfsops.c:1.109
--- src/sys/fs/smbfs/smbfs_vfsops.c:1.108	Thu Feb 27 22:12:54 2020
+++ src/sys/fs/smbfs/smbfs_vfsops.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: smbfs_vfsops.c,v 1.108 2020/02/27 22:12:54 ad Exp $	*/
+/*	$NetBSD: smbfs_vfsops.c,v 1.109 2020/03/16 21:20:10 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 2000-2001, Boris Popov
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: smbfs_vfsops.c,v 1.108 2020/02/27 22:12:54 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smbfs_vfsops.c,v 1.109 2020/03/16 21:20:10 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -66,8 +66,6 @@ MODULE(MODULE_CLASS_VFS, smbfs, "nsmb");
 
 VFS_PROTOS(smbfs);
 
-static struct sysctllog *smbfs_sysctl_log;
-
 static int smbfs_setroot(struct mount *);
 
 extern struct vnodeopv_desc smbfs_vnodeop_opv_desc;
@@ -104,10 +102,30 @@ struct vfsops smbfs_vfsops = {
 	.vfs_opv_descs = smbfs_vnodeopv_descs
 };
 
+SYSCTL_SETUP(smbfs_sysctl_setpu, "smbfs sysctl")
+{
+	const struct sysctlnode *smb = NULL;
+
+	sysctl_createv(clog, 0, NULL, &smb,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "samba",
+		       SYSCTL_DESCR("SMB/CIFS remote file system"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, CTL_CREATE, CTL_EOL);
+
+	if (smb != NULL) {
+		sysctl_createv(clog, 0, &smb, NULL,
+			       CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
+			       CTLTYPE_INT, "version",
+			       SYSCTL_DESCR("smbfs version"),
+			       NULL, SMBFS_VERSION, NULL, 0,
+			       CTL_CREATE, CTL_EOL);
+	}
+}
+
 static int
 smbfs_modcmd(modcmd_t cmd, void *arg)
 {
-	const struct sysctlnode *smb = NULL;
 	int error;
 
 	switch (cmd) {
@@ -115,27 +133,11 @@ smbfs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&smbfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&smbfs_sysctl_log, 0, NULL, &smb,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "samba",
-			       SYSCTL_DESCR("SMB/CIFS remote file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, CTL_CREATE, CTL_EOL);
-
-		if (smb != NULL) {
-			sysctl_createv(&smbfs_sysctl_log, 0, &smb, NULL,
-				       CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
-				       CTLTYPE_INT, "version",
-				       SYSCTL_DESCR("smbfs version"),
-				       NULL, SMBFS_VERSION, NULL, 0,
-				       CTL_CREATE, CTL_EOL);
-		}
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&smbfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&smbfs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/fs/udf/udf_vfsops.c
diff -u src/sys/fs/udf/udf_vfsops.c:1.77 src/sys/fs/udf/udf_vfsops.c:1.78
--- src/sys/fs/udf/udf_vfsops.c:1.77	Fri Jan 17 20:08:08 2020
+++ src/sys/fs/udf/udf_vfsops.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: udf_vfsops.c,v 1.77 2020/01/17 20:08:08 ad Exp $ */
+/* $NetBSD: udf_vfsops.c,v 1.78 2020/03/16 21:20:10 pgoyette Exp $ */
 
 /*
  * Copyright (c) 2006, 2008 Reinoud Zandijk
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__KERNEL_RCSID(0, "$NetBSD: udf_vfsops.c,v 1.77 2020/01/17 20:08:08 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udf_vfsops.c,v 1.78 2020/03/16 21:20:10 pgoyette Exp $");
 #endif /* not lint */
 
 
@@ -79,8 +79,6 @@ MALLOC_JUSTDEFINE(M_UDFVOLD,  "UDF volsp
 MALLOC_JUSTDEFINE(M_UDFTEMP,  "UDF temp",	"UDF scrap space");
 struct pool udf_node_pool;
 
-static struct sysctllog *udf_sysctl_log;
-
 /* internal functions */
 static int udf_mountfs(struct vnode *, struct mount *, struct lwp *, struct udf_args *);
 
@@ -169,10 +167,29 @@ udf_done(void)
  */
 #define UDF_VERBOSE_SYSCTLOPT        1
 
+SYSCTL_SETUP(udf_sysctl_setup, "udf sysctl")
+{
+	const struct sysctlnode *node;
+
+	sysctl_createv(clog, 0, NULL, &node,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "udf",
+		       SYSCTL_DESCR("OSTA Universal File System"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 24, CTL_EOL);
+#ifdef DEBUG
+	sysctl_createv(clog, 0, NULL, &node,
+		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+		       CTLTYPE_INT, "verbose",
+		       SYSCTL_DESCR("Bitmask for filesystem debugging"),
+		       NULL, 0, &udf_verbose, 0,
+		       CTL_VFS, 24, UDF_VERBOSE_SYSCTLOPT, CTL_EOL);
+#endif
+}
+
 static int
 udf_modcmd(modcmd_t cmd, void *arg)
 {
-	const struct sysctlnode *node;
 	int error;
 
 	switch (cmd) {
@@ -185,26 +202,11 @@ udf_modcmd(modcmd_t cmd, void *arg)
 		 * more instance of the "number to vfs" mapping problem, but
 		 * "24" is the order as taken from sys/mount.h
 		 */
-		sysctl_createv(&udf_sysctl_log, 0, NULL, &node,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "udf",
-			       SYSCTL_DESCR("OSTA Universal File System"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 24, CTL_EOL);
-#ifdef DEBUG
-		sysctl_createv(&udf_sysctl_log, 0, NULL, &node,
-			       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
-			       CTLTYPE_INT, "verbose",
-			       SYSCTL_DESCR("Bitmask for filesystem debugging"),
-			       NULL, 0, &udf_verbose, 0,
-			       CTL_VFS, 24, UDF_VERBOSE_SYSCTLOPT, CTL_EOL);
-#endif
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&udf_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&udf_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/fs/union/union_vfsops.c
diff -u src/sys/fs/union/union_vfsops.c:1.80 src/sys/fs/union/union_vfsops.c:1.81
--- src/sys/fs/union/union_vfsops.c:1.80	Fri Jan 17 20:08:08 2020
+++ src/sys/fs/union/union_vfsops.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: union_vfsops.c,v 1.80 2020/01/17 20:08:08 ad Exp $	*/
+/*	$NetBSD: union_vfsops.c,v 1.81 2020/03/16 21:20:10 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1994 The Regents of the University of California.
@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: union_vfsops.c,v 1.80 2020/01/17 20:08:08 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: union_vfsops.c,v 1.81 2020/03/16 21:20:10 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -99,8 +99,6 @@ __KERNEL_RCSID(0, "$NetBSD: union_vfsops
 
 MODULE(MODULE_CLASS_VFS, union, NULL);
 
-static struct sysctllog *union_sysctl_log;
-
 /*
  * Mount union filesystem
  */
@@ -545,6 +543,22 @@ struct vfsops union_vfsops = {
 	.vfs_opv_descs = union_vnodeopv_descs
 };
 
+SYSCTL_SETUP(unionfs_sysctl_setup, "unionfs sysctl")
+{
+
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "union",
+		       SYSCTL_DESCR("Union file system"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 15, CTL_EOL);
+	/*
+	 * XXX the "15" above could be dynamic, thereby eliminating
+	 * one more instance of the "number to vfs" mapping problem,
+	 * but "15" is the order as taken from sys/mount.h
+	 */
+}
+
 static int
 union_modcmd(modcmd_t cmd, void *arg)
 {
@@ -555,23 +569,11 @@ union_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&union_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&union_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "union",
-			       SYSCTL_DESCR("Union file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 15, CTL_EOL);
-		/*
-		 * XXX the "15" above could be dynamic, thereby eliminating
-		 * one more instance of the "number to vfs" mapping problem,
-		 * but "15" is the order as taken from sys/mount.h
-		 */
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&union_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&union_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/kern/sys_aio.c
diff -u src/sys/kern/sys_aio.c:1.46 src/sys/kern/sys_aio.c:1.47
--- src/sys/kern/sys_aio.c:1.46	Sat Feb  1 02:23:04 2020
+++ src/sys/kern/sys_aio.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_aio.c,v 1.46 2020/02/01 02:23:04 riastradh Exp $	*/
+/*	$NetBSD: sys_aio.c,v 1.47 2020/03/16 21:20:10 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 2007 Mindaugas Rasiukevicius <rmind at NetBSD org>
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_aio.c,v 1.46 2020/02/01 02:23:04 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_aio.c,v 1.47 2020/03/16 21:20:10 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -73,7 +73,6 @@ u_int			aio_listio_max = AIO_LISTIO_MAX;
 static u_int		aio_max = AIO_MAX;
 static u_int		aio_jobs_count;
 
-static struct sysctllog	*aio_sysctl;
 static struct pool	aio_job_pool;
 static struct pool	aio_lio_pool;
 static void *		aio_ehook;
@@ -86,7 +85,6 @@ static void		aio_exit(proc_t *, void *);
 
 static int		sysctl_aio_listio_max(SYSCTLFN_PROTO);
 static int		sysctl_aio_max(SYSCTLFN_PROTO);
-static int		sysctl_aio_init(void);
 
 static const struct syscall_package aio_syscalls[] = {
 	{ SYS_aio_cancel, 0, (sy_call_t *)sys_aio_cancel },
@@ -127,8 +125,6 @@ aio_fini(bool interface)
 			return EBUSY;
 		}
 	}
-	if (aio_sysctl != NULL)
-		sysctl_teardown(&aio_sysctl);
 
 	KASSERT(aio_jobs_count == 0);
 	exithook_disestablish(aio_ehook);
@@ -151,11 +147,6 @@ aio_init(void)
 	    "aio_lio_pool", &pool_allocator_nointr, IPL_NONE);
 	aio_ehook = exithook_establish(aio_exit, NULL);
 
-	error = sysctl_aio_init();
-	if (error != 0) {
-		(void)aio_fini(false);
-		return error;
-	}
 	error = syscall_establish(NULL, aio_syscalls);
 	if (error != 0)
 		(void)aio_fini(false);
@@ -1088,14 +1079,11 @@ sysctl_aio_max(SYSCTLFN_ARGS)
 	return 0;
 }
 
-static int
-sysctl_aio_init(void)
+SYSCTL_SETUP(sysctl_aio_init, "aio sysctl")
 {
 	int rv;
 
-	aio_sysctl = NULL;
-
-	rv = sysctl_createv(&aio_sysctl, 0, NULL, NULL,
+	rv = sysctl_createv(clog, 0, NULL, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_IMMEDIATE,
 		CTLTYPE_INT, "posix_aio",
 		SYSCTL_DESCR("Version of IEEE Std 1003.1 and its "
@@ -1105,9 +1093,9 @@ sysctl_aio_init(void)
 		CTL_KERN, CTL_CREATE, CTL_EOL);
 
 	if (rv != 0)
-		return rv;
+		return;
 
-	rv = sysctl_createv(&aio_sysctl, 0, NULL, NULL,
+	rv = sysctl_createv(clog, 0, NULL, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 		CTLTYPE_INT, "aio_listio_max",
 		SYSCTL_DESCR("Maximum number of asynchronous I/O "
@@ -1116,9 +1104,9 @@ sysctl_aio_init(void)
 		CTL_KERN, CTL_CREATE, CTL_EOL);
 
 	if (rv != 0)
-		return rv;
+		return;
 
-	rv = sysctl_createv(&aio_sysctl, 0, NULL, NULL,
+	rv = sysctl_createv(clog, 0, NULL, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 		CTLTYPE_INT, "aio_max",
 		SYSCTL_DESCR("Maximum number of asynchronous I/O "
@@ -1126,7 +1114,7 @@ sysctl_aio_init(void)
 		sysctl_aio_max, 0, &aio_max, 0,
 		CTL_KERN, CTL_CREATE, CTL_EOL);
 
-	return rv;
+	return;
 }
 
 /*

Index: src/sys/kern/sys_mqueue.c
diff -u src/sys/kern/sys_mqueue.c:1.45 src/sys/kern/sys_mqueue.c:1.46
--- src/sys/kern/sys_mqueue.c:1.45	Sun Sep 15 20:51:03 2019
+++ src/sys/kern/sys_mqueue.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_mqueue.c,v 1.45 2019/09/15 20:51:03 christos Exp $	*/
+/*	$NetBSD: sys_mqueue.c,v 1.46 2020/03/16 21:20:10 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Mindaugas Rasiukevicius <rmind at NetBSD org>
@@ -43,7 +43,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_mqueue.c,v 1.45 2019/09/15 20:51:03 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_mqueue.c,v 1.46 2020/03/16 21:20:10 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -79,13 +79,11 @@ static u_int			mq_max_maxmsg = 16 * 32;
 static pool_cache_t		mqmsg_cache	__read_mostly;
 static kmutex_t			mqlist_lock	__cacheline_aligned;
 static LIST_HEAD(, mqueue)	mqueue_head	__cacheline_aligned;
-static struct sysctllog *	mqsysctl_log;
 
 static kauth_listener_t		mq_listener;
 
 static int	mqueue_sysinit(void);
 static int	mqueue_sysfini(bool);
-static int	mqueue_sysctl_init(void);
 static int	mq_poll_fop(file_t *, int);
 static int	mq_stat_fop(file_t *, struct stat *);
 static int	mq_close_fop(file_t *);
@@ -151,15 +149,7 @@ mqueue_sysinit(void)
 	mutex_init(&mqlist_lock, MUTEX_DEFAULT, IPL_NONE);
 	LIST_INIT(&mqueue_head);
 
-	error = mqueue_sysctl_init();
-	if (error) {
-		(void)mqueue_sysfini(false);
-		return error;
-	}
 	error = syscall_establish(NULL, mqueue_syscalls);
-	if (error) {
-		(void)mqueue_sysfini(false);
-	}
 	mq_listener = kauth_listen_scope(KAUTH_SCOPE_SYSTEM,
 	    mq_listener_cb, NULL);
 	return error;
@@ -188,9 +178,6 @@ mqueue_sysfini(bool interface)
 		}
 	}
 
-	if (mqsysctl_log != NULL)
-		sysctl_teardown(&mqsysctl_log);
-
 	kauth_unlisten_scope(mq_listener);
 
 	mutex_destroy(&mqlist_lock);
@@ -1148,14 +1135,11 @@ err:
 /*
  * System control nodes.
  */
-static int
-mqueue_sysctl_init(void)
+SYSCTL_SETUP(mqueue_sysctl_init, "mqueue systl")
 {
 	const struct sysctlnode *node = NULL;
 
-	mqsysctl_log = NULL;
-
-	sysctl_createv(&mqsysctl_log, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
 		CTLTYPE_INT, "posix_msg",
 		SYSCTL_DESCR("Version of IEEE Std 1003.1 and its "
@@ -1163,7 +1147,7 @@ mqueue_sysctl_init(void)
 			     "system attempts to conform"),
 		NULL, _POSIX_MESSAGE_PASSING, NULL, 0,
 		CTL_KERN, CTL_CREATE, CTL_EOL);
-	sysctl_createv(&mqsysctl_log, 0, NULL, &node,
+	sysctl_createv(clog, 0, NULL, &node,
 		CTLFLAG_PERMANENT,
 		CTLTYPE_NODE, "mqueue",
 		SYSCTL_DESCR("Message queue options"),
@@ -1171,41 +1155,41 @@ mqueue_sysctl_init(void)
 		CTL_KERN, CTL_CREATE, CTL_EOL);
 
 	if (node == NULL)
-		return ENXIO;
+		return;
 
-	sysctl_createv(&mqsysctl_log, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 		CTLTYPE_INT, "mq_open_max",
 		SYSCTL_DESCR("Maximal number of message queue descriptors "
 			     "that process could open"),
 		NULL, 0, &mq_open_max, 0,
 		CTL_CREATE, CTL_EOL);
-	sysctl_createv(&mqsysctl_log, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 		CTLTYPE_INT, "mq_prio_max",
 		SYSCTL_DESCR("Maximal priority of the message"),
 		NULL, 0, &mq_prio_max, 0,
 		CTL_CREATE, CTL_EOL);
-	sysctl_createv(&mqsysctl_log, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 		CTLTYPE_INT, "mq_max_msgsize",
 		SYSCTL_DESCR("Maximal allowed size of the message"),
 		NULL, 0, &mq_max_msgsize, 0,
 		CTL_CREATE, CTL_EOL);
-	sysctl_createv(&mqsysctl_log, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 		CTLTYPE_INT, "mq_def_maxmsg",
 		SYSCTL_DESCR("Default maximal message count"),
 		NULL, 0, &mq_def_maxmsg, 0,
 		CTL_CREATE, CTL_EOL);
-	sysctl_createv(&mqsysctl_log, 0, &node, NULL,
+	sysctl_createv(clog, 0, &node, NULL,
 		CTLFLAG_PERMANENT | CTLFLAG_READWRITE,
 		CTLTYPE_INT, "mq_max_maxmsg",
 		SYSCTL_DESCR("Maximal allowed message count"),
 		NULL, 0, &mq_max_maxmsg, 0,
 		CTL_CREATE, CTL_EOL);
 
-	return 0;
+	return;
 }
 
 /*

Index: src/sys/kern/vfs_wapbl.c
diff -u src/sys/kern/vfs_wapbl.c:1.105 src/sys/kern/vfs_wapbl.c:1.106
--- src/sys/kern/vfs_wapbl.c:1.105	Sat Mar 14 15:32:51 2020
+++ src/sys/kern/vfs_wapbl.c	Mon Mar 16 21:20:10 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_wapbl.c,v 1.105 2020/03/14 15:32:51 ad Exp $	*/
+/*	$NetBSD: vfs_wapbl.c,v 1.106 2020/03/16 21:20:10 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2003, 2008, 2009 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
 #define WAPBL_INTERNAL
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_wapbl.c,v 1.105 2020/03/14 15:32:51 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_wapbl.c,v 1.106 2020/03/16 21:20:10 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/bitops.h>
@@ -68,7 +68,6 @@ __KERNEL_RCSID(0, "$NetBSD: vfs_wapbl.c,
 #define	wapbl_free(a, s) kmem_free((a), (s))
 #define	wapbl_calloc(n, s) kmem_zalloc((n)*(s), KM_SLEEP)
 
-static struct sysctllog *wapbl_sysctl;
 static int wapbl_flush_disk_cache = 1;
 static int wapbl_verbose_commit = 0;
 static int wapbl_allow_dpofua = 0; 	/* switched off by default for now */
@@ -318,60 +317,57 @@ const struct wapbl_ops wapbl_ops = {
 	.wo_wapbl_biodone	= wapbl_biodone,
 };
 
-static int
-wapbl_sysctl_init(void)
+SYSCTL_SETUP(wapbl_sysctl_init, "wapbl sysctl")
 {
 	int rv;
 	const struct sysctlnode *rnode, *cnode;
 
-	wapbl_sysctl = NULL;
-
-	rv = sysctl_createv(&wapbl_sysctl, 0, NULL, &rnode,
+	rv = sysctl_createv(clog, 0, NULL, &rnode,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "wapbl",
 		       SYSCTL_DESCR("WAPBL journaling options"),
 		       NULL, 0, NULL, 0,
 		       CTL_VFS, CTL_CREATE, CTL_EOL);
 	if (rv)
-		return rv;
+		return;
 
-	rv = sysctl_createv(&wapbl_sysctl, 0, &rnode, &cnode,
+	rv = sysctl_createv(clog, 0, &rnode, &cnode,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "flush_disk_cache",
 		       SYSCTL_DESCR("flush disk cache"),
 		       NULL, 0, &wapbl_flush_disk_cache, 0,
 		       CTL_CREATE, CTL_EOL);
 	if (rv)
-		return rv;
+		return;
 
-	rv = sysctl_createv(&wapbl_sysctl, 0, &rnode, &cnode,
+	rv = sysctl_createv(clog, 0, &rnode, &cnode,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "verbose_commit",
 		       SYSCTL_DESCR("show time and size of wapbl log commits"),
 		       NULL, 0, &wapbl_verbose_commit, 0,
 		       CTL_CREATE, CTL_EOL);
 	if (rv)
-		return rv;
+		return;
 
-	rv = sysctl_createv(&wapbl_sysctl, 0, &rnode, &cnode,
+	rv = sysctl_createv(clog, 0, &rnode, &cnode,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "allow_dpofua",
 		       SYSCTL_DESCR("allow use of FUA/DPO instead of cache flush if available"),
 		       NULL, 0, &wapbl_allow_dpofua, 0,
 		       CTL_CREATE, CTL_EOL);
 	if (rv)
-		return rv;
+		return;
 
-	rv = sysctl_createv(&wapbl_sysctl, 0, &rnode, &cnode,
+	rv = sysctl_createv(clog, 0, &rnode, &cnode,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "journal_iobufs",
 		       SYSCTL_DESCR("count of bufs used for journal I/O (max async count)"),
 		       NULL, 0, &wapbl_journal_iobufs, 0,
 		       CTL_CREATE, CTL_EOL);
 	if (rv)
-		return rv;
+		return;
 
-	return rv;
+	return;
 }
 
 static void
@@ -382,17 +378,12 @@ wapbl_init(void)
 	    "wapblentrypl", &pool_allocator_kmem, IPL_VM);
 	pool_init(&wapbl_dealloc_pool, sizeof(struct wapbl_dealloc), 0, 0, 0,
 	    "wapbldealloc", &pool_allocator_nointr, IPL_NONE);
-
-	wapbl_sysctl_init();
 }
 
 static int
 wapbl_fini(void)
 {
 
-	if (wapbl_sysctl != NULL)
-		 sysctl_teardown(&wapbl_sysctl);
-
 	pool_destroy(&wapbl_dealloc_pool);
 	pool_destroy(&wapbl_entry_pool);
 

Index: src/sys/miscfs/fdesc/fdesc_vfsops.c
diff -u src/sys/miscfs/fdesc/fdesc_vfsops.c:1.93 src/sys/miscfs/fdesc/fdesc_vfsops.c:1.94
--- src/sys/miscfs/fdesc/fdesc_vfsops.c:1.93	Fri Jan 17 20:08:09 2020
+++ src/sys/miscfs/fdesc/fdesc_vfsops.c	Mon Mar 16 21:20:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: fdesc_vfsops.c,v 1.93 2020/01/17 20:08:09 ad Exp $	*/
+/*	$NetBSD: fdesc_vfsops.c,v 1.94 2020/03/16 21:20:11 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993, 1995
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fdesc_vfsops.c,v 1.93 2020/01/17 20:08:09 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fdesc_vfsops.c,v 1.94 2020/03/16 21:20:11 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -263,16 +263,9 @@ struct vfsops fdesc_vfsops = {
 	.vfs_opv_descs = fdesc_vnodeopv_descs
 };
 
-static int
-fdesc_modcmd(modcmd_t cmd, void *arg)
+SYSCTL_SETUP(fdesc_sysctl_setup, "fdesc sysctl")
 {
-	int error;
 
-	switch (cmd) {
-	case MODULE_CMD_INIT:
-		error = vfs_attach(&fdesc_vfsops);
-		if (error != 0)
-			break;
 		sysctl_createv(&fdesc_sysctl_log, 0, NULL, NULL,
 			       CTLFLAG_PERMANENT,
 			       CTLTYPE_NODE, "fdesc",
@@ -284,12 +277,23 @@ fdesc_modcmd(modcmd_t cmd, void *arg)
 		 * more instance of the "number to vfs" mapping problem, but
 		 * "7" is the order as taken from sys/mount.h
 		 */
+}
+
+static int
+fdesc_modcmd(modcmd_t cmd, void *arg)
+{
+	int error;
+
+	switch (cmd) {
+	case MODULE_CMD_INIT:
+		error = vfs_attach(&fdesc_vfsops);
+		if (error != 0)
+			break;
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&fdesc_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&fdesc_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/miscfs/kernfs/kernfs_vfsops.c
diff -u src/sys/miscfs/kernfs/kernfs_vfsops.c:1.98 src/sys/miscfs/kernfs/kernfs_vfsops.c:1.99
--- src/sys/miscfs/kernfs/kernfs_vfsops.c:1.98	Tue Feb  4 04:19:24 2020
+++ src/sys/miscfs/kernfs/kernfs_vfsops.c	Mon Mar 16 21:20:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: kernfs_vfsops.c,v 1.98 2020/02/04 04:19:24 riastradh Exp $	*/
+/*	$NetBSD: kernfs_vfsops.c,v 1.99 2020/03/16 21:20:11 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993, 1995
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kernfs_vfsops.c,v 1.98 2020/02/04 04:19:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kernfs_vfsops.c,v 1.99 2020/03/16 21:20:11 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -74,8 +74,6 @@ VFS_PROTOS(kernfs);
 
 void	kernfs_get_rrootdev(void);
 
-static struct sysctllog *kernfs_sysctl_log;
-
 void
 kernfs_init(void)
 {
@@ -328,6 +326,22 @@ struct vfsops kernfs_vfsops = {
 	.vfs_opv_descs = kernfs_vnodeopv_descs
 };
 
+SYSCTL_SETUP(kernfs_sysctl_setup, "kernfs sysctl")
+{
+
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "kernfs",
+		       SYSCTL_DESCR("/kern file system"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 11, CTL_EOL);
+	/*
+	 * XXX the "11" above could be dynamic, thereby eliminating one
+	 * more instance of the "number to vfs" mapping problem, but
+	 * "11" is the order as taken from sys/mount.h
+	 */
+}
+
 static int
 kernfs_modcmd(modcmd_t cmd, void *arg)
 {
@@ -338,23 +352,11 @@ kernfs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&kernfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&kernfs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "kernfs",
-			       SYSCTL_DESCR("/kern file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 11, CTL_EOL);
-		/*
-		 * XXX the "11" above could be dynamic, thereby eliminating one
-		 * more instance of the "number to vfs" mapping problem, but
-		 * "11" is the order as taken from sys/mount.h
-		 */
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&kernfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&kernfs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/miscfs/nullfs/null_vfsops.c
diff -u src/sys/miscfs/nullfs/null_vfsops.c:1.96 src/sys/miscfs/nullfs/null_vfsops.c:1.97
--- src/sys/miscfs/nullfs/null_vfsops.c:1.96	Sun Dec 15 20:30:56 2019
+++ src/sys/miscfs/nullfs/null_vfsops.c	Mon Mar 16 21:20:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: null_vfsops.c,v 1.96 2019/12/15 20:30:56 joerg Exp $	*/
+/*	$NetBSD: null_vfsops.c,v 1.97 2020/03/16 21:20:11 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1999 National Aeronautics & Space Administration
@@ -76,7 +76,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: null_vfsops.c,v 1.96 2019/12/15 20:30:56 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: null_vfsops.c,v 1.97 2020/03/16 21:20:11 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -93,8 +93,6 @@ MODULE(MODULE_CLASS_VFS, null, "layerfs"
 
 VFS_PROTOS(nullfs);
 
-static struct sysctllog *nullfs_sysctl_log;
-
 int
 nullfs_mount(struct mount *mp, const char *path, void *data, size_t *data_len)
 {
@@ -238,6 +236,22 @@ struct vfsops nullfs_vfsops = {
 	.vfs_opv_descs = nullfs_vnodeopv_descs
 };
 
+SYSCTL_SETUP(nullfs_sysctl_setup, "nullfs sysctl")
+{
+
+	sysctl_createv(clog, 0, NULL, NULL,
+	    CTLFLAG_PERMANENT,
+	    CTLTYPE_NODE, "null",
+	    SYSCTL_DESCR("Loopback file system"),
+	    NULL, 0, NULL, 0,
+	    CTL_VFS, 9, CTL_EOL);
+	/*
+	 * XXX the "9" above could be dynamic, thereby eliminating
+	 * one more instance of the "number to vfs" mapping problem,
+	 * but "9" is the order as taken from sys/mount.h
+	 */
+}
+
 static int
 null_modcmd(modcmd_t cmd, void *arg)
 {
@@ -248,23 +262,11 @@ null_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&nullfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&nullfs_sysctl_log, 0, NULL, NULL,
-		    CTLFLAG_PERMANENT,
-		    CTLTYPE_NODE, "null",
-		    SYSCTL_DESCR("Loopback file system"),
-		    NULL, 0, NULL, 0,
-		    CTL_VFS, 9, CTL_EOL);
-		/*
-		 * XXX the "9" above could be dynamic, thereby eliminating
-		 * one more instance of the "number to vfs" mapping problem,
-		 * but "9" is the order as taken from sys/mount.h
-		 */
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&nullfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&nullfs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/miscfs/overlay/overlay_vfsops.c
diff -u src/sys/miscfs/overlay/overlay_vfsops.c:1.68 src/sys/miscfs/overlay/overlay_vfsops.c:1.69
--- src/sys/miscfs/overlay/overlay_vfsops.c:1.68	Wed Feb 20 10:06:00 2019
+++ src/sys/miscfs/overlay/overlay_vfsops.c	Mon Mar 16 21:20:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: overlay_vfsops.c,v 1.68 2019/02/20 10:06:00 hannken Exp $	*/
+/*	$NetBSD: overlay_vfsops.c,v 1.69 2020/03/16 21:20:11 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1999, 2000 National Aeronautics & Space Administration
@@ -74,7 +74,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: overlay_vfsops.c,v 1.68 2019/02/20 10:06:00 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: overlay_vfsops.c,v 1.69 2020/03/16 21:20:11 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -270,6 +270,16 @@ struct vfsops overlay_vfsops = {
 	.vfs_opv_descs = ov_vnodeopv_descs
 };
 
+SYSCTL_SETUP(overlay_sysctl_setup, "overlay fs sysctl")
+{
+
+	sysctl_createv(&overlay_sysctl_log, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT, CTLTYPE_NODE, "overlay",
+		       SYSCTL_DESCR("Overlay file system"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, CTL_CREATE, CTL_EOL);
+}
+
 static int
 overlay_modcmd(modcmd_t cmd, void *arg)
 {
@@ -280,17 +290,11 @@ overlay_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&overlay_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&overlay_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT, CTLTYPE_NODE, "overlay",
-			       SYSCTL_DESCR("Overlay file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, CTL_CREATE, CTL_EOL);
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&overlay_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&overlay_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/miscfs/procfs/procfs_vfsops.c
diff -u src/sys/miscfs/procfs/procfs_vfsops.c:1.102 src/sys/miscfs/procfs/procfs_vfsops.c:1.103
--- src/sys/miscfs/procfs/procfs_vfsops.c:1.102	Fri Jan 17 20:08:09 2020
+++ src/sys/miscfs/procfs/procfs_vfsops.c	Mon Mar 16 21:20:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: procfs_vfsops.c,v 1.102 2020/01/17 20:08:09 ad Exp $	*/
+/*	$NetBSD: procfs_vfsops.c,v 1.103 2020/03/16 21:20:11 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1993
@@ -76,7 +76,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: procfs_vfsops.c,v 1.102 2020/01/17 20:08:09 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: procfs_vfsops.c,v 1.103 2020/03/16 21:20:11 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -109,8 +109,6 @@ MODULE(MODULE_CLASS_VFS, procfs, "ptrace
 
 VFS_PROTOS(procfs);
 
-static struct sysctllog *procfs_sysctl_log;
-
 static kauth_listener_t procfs_listener;
 
 /*
@@ -518,6 +516,21 @@ procfs_listener_cb(kauth_cred_t cred, ka
 	return result;
 }
 
+SYSCTL_SETUP(procfs_sysctl_setup, "procfs sysctl")
+{
+
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "procfs",
+		       SYSCTL_DESCR("Process file system"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 12, CTL_EOL);
+	/*
+	 * XXX the "12" above could be dynamic, thereby eliminating
+	 * one more instance of the "number to vfs" mapping problem,
+	 * but "12" is the order as taken from sys/mount.h
+	 */
+}
 
 static int
 procfs_modcmd(modcmd_t cmd, void *arg)
@@ -529,17 +542,6 @@ procfs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&procfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&procfs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "procfs",
-			       SYSCTL_DESCR("Process file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 12, CTL_EOL);
-		/*
-		 * XXX the "12" above could be dynamic, thereby eliminating
-		 * one more instance of the "number to vfs" mapping problem,
-		 * but "12" is the order as taken from sys/mount.h
-		 */
 
 		procfs_listener = kauth_listen_scope(KAUTH_SCOPE_PROCESS,
 		    procfs_listener_cb, NULL);
@@ -549,7 +551,6 @@ procfs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_detach(&procfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&procfs_sysctl_log);
 		kauth_unlisten_scope(procfs_listener);
 		break;
 	default:

Index: src/sys/miscfs/umapfs/umap_vfsops.c
diff -u src/sys/miscfs/umapfs/umap_vfsops.c:1.101 src/sys/miscfs/umapfs/umap_vfsops.c:1.102
--- src/sys/miscfs/umapfs/umap_vfsops.c:1.101	Tue Aug 20 20:18:54 2019
+++ src/sys/miscfs/umapfs/umap_vfsops.c	Mon Mar 16 21:20:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: umap_vfsops.c,v 1.101 2019/08/20 20:18:54 perseant Exp $	*/
+/*	$NetBSD: umap_vfsops.c,v 1.102 2020/03/16 21:20:11 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: umap_vfsops.c,v 1.101 2019/08/20 20:18:54 perseant Exp $");
+__KERNEL_RCSID(0, "$NetBSD: umap_vfsops.c,v 1.102 2020/03/16 21:20:11 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -62,8 +62,6 @@ MODULE(MODULE_CLASS_VFS, umap, "layerfs"
 
 VFS_PROTOS(umapfs);
 
-static struct sysctllog *umapfs_sysctl_log;
-
 /*
  * Mount umap layer
  */
@@ -328,6 +326,22 @@ struct vfsops umapfs_vfsops = {
 	.vfs_opv_descs = umapfs_vnodeopv_descs
 };
 
+SYSCTL_SETUP(umapfs_sysctl_setup, "umapfs sysctl")
+{
+
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "umap",
+		       SYSCTL_DESCR("UID/GID remapping file system"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 10, CTL_EOL);
+	/*
+	 * XXX the "10" above could be dynamic, thereby eliminating
+	 * one more instance of the "number to vfs" mapping problem,
+	 * but "10" is the order as taken from sys/mount.h
+	 */
+}
+
 static int
 umap_modcmd(modcmd_t cmd, void *arg)
 {
@@ -338,23 +352,11 @@ umap_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&umapfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&umapfs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "umap",
-			       SYSCTL_DESCR("UID/GID remapping file system"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 10, CTL_EOL);
-		/*
-		 * XXX the "10" above could be dynamic, thereby eliminating
-		 * one more instance of the "number to vfs" mapping problem,
-		 * but "10" is the order as taken from sys/mount.h
-		 */
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&umapfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&umapfs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/net/bpf.c
diff -u src/sys/net/bpf.c:1.235 src/sys/net/bpf.c:1.236
--- src/sys/net/bpf.c:1.235	Fri Feb  7 12:35:33 2020
+++ src/sys/net/bpf.c	Mon Mar 16 21:20:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bpf.c,v 1.235 2020/02/07 12:35:33 thorpej Exp $	*/
+/*	$NetBSD: bpf.c,v 1.236 2020/03/16 21:20:11 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1990, 1991, 1993
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bpf.c,v 1.235 2020/02/07 12:35:33 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bpf.c,v 1.236 2020/03/16 21:20:11 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_bpf.h"
@@ -2427,14 +2427,12 @@ bpf_sysctl_gstats_handler(SYSCTLFN_ARGS)
 	return 0;
 }
 
-static struct sysctllog *bpf_sysctllog;
-static void
-sysctl_net_bpf_setup(void)
+SYSCTL_SETUP(sysctl_net_bpf_setup, "bpf sysctls")
 {
 	const struct sysctlnode *node;
 
 	node = NULL;
-	sysctl_createv(&bpf_sysctllog, 0, NULL, &node,
+	sysctl_createv(clog, 0, NULL, &node,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "bpf",
 		       SYSCTL_DESCR("BPF options"),
@@ -2442,26 +2440,26 @@ sysctl_net_bpf_setup(void)
 		       CTL_NET, CTL_CREATE, CTL_EOL);
 	if (node != NULL) {
 #if defined(MODULAR) || defined(BPFJIT)
-		sysctl_createv(&bpf_sysctllog, 0, NULL, NULL,
+		sysctl_createv(clog, 0, NULL, NULL,
 			CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 			CTLTYPE_BOOL, "jit",
 			SYSCTL_DESCR("Toggle Just-In-Time compilation"),
 			sysctl_net_bpf_jit, 0, &bpf_jit, 0,
 			CTL_NET, node->sysctl_num, CTL_CREATE, CTL_EOL);
 #endif
-		sysctl_createv(&bpf_sysctllog, 0, NULL, NULL,
+		sysctl_createv(clog, 0, NULL, NULL,
 			CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 			CTLTYPE_INT, "maxbufsize",
 			SYSCTL_DESCR("Maximum size for data capture buffer"),
 			sysctl_net_bpf_maxbufsize, 0, &bpf_maxbufsize, 0,
 			CTL_NET, node->sysctl_num, CTL_CREATE, CTL_EOL);
-		sysctl_createv(&bpf_sysctllog, 0, NULL, NULL,
+		sysctl_createv(clog, 0, NULL, NULL,
 			CTLFLAG_PERMANENT,
 			CTLTYPE_STRUCT, "stats",
 			SYSCTL_DESCR("BPF stats"),
 			bpf_sysctl_gstats_handler, 0, NULL, 0,
 			CTL_NET, node->sysctl_num, CTL_CREATE, CTL_EOL);
-		sysctl_createv(&bpf_sysctllog, 0, NULL, NULL,
+		sysctl_createv(clog, 0, NULL, NULL,
 			CTLFLAG_PERMANENT,
 			CTLTYPE_STRUCT, "peers",
 			SYSCTL_DESCR("BPF peers"),
@@ -2510,7 +2508,6 @@ bpf_modcmd(modcmd_t cmd, void *arg)
 		bpf_ops_handover_enter(&bpf_ops_kernel);
 		atomic_swap_ptr(&bpf_ops, &bpf_ops_kernel);
 		bpf_ops_handover_exit();
-		sysctl_net_bpf_setup();
 		break;
 
 	case MODULE_CMD_FINI:
@@ -2535,7 +2532,6 @@ bpf_modcmd(modcmd_t cmd, void *arg)
 		 * disable packet capture.
 		 */
 		error = EOPNOTSUPP;
-		/* insert sysctl teardown */
 		break;
 
 	default:

Index: src/sys/netinet/accf_http.c
diff -u src/sys/netinet/accf_http.c:1.9 src/sys/netinet/accf_http.c:1.10
--- src/sys/netinet/accf_http.c:1.9	Thu Aug 20 14:40:19 2015
+++ src/sys/netinet/accf_http.c	Mon Mar 16 21:20:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: accf_http.c,v 1.9 2015/08/20 14:40:19 christos Exp $	*/
+/*	$NetBSD: accf_http.c,v 1.10 2020/03/16 21:20:11 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2000 Paycounter, Inc.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: accf_http.c,v 1.9 2015/08/20 14:40:19 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: accf_http.c,v 1.10 2020/03/16 21:20:11 pgoyette Exp $");
 
 #define ACCEPT_FILTER_MOD
 
@@ -80,51 +80,48 @@ accf_httpattach(int junk)
 
 }
 
+SYSCTL_SETUP(accf_sysctl_setup, "accf sysctl")
+{
+
+	sysctl_createv(clog, 0, NULL, NULL,
+	       CTLFLAG_PERMANENT,
+	       CTLTYPE_NODE, "inet", NULL,
+	       NULL, 0, NULL, 0,
+	       CTL_NET, PF_INET, CTL_EOL);
+	sysctl_createv(clog, 0, NULL, NULL,
+	       CTLFLAG_PERMANENT,
+	       CTLTYPE_NODE, "accf", NULL,
+	       NULL, 0, NULL, 0,
+	       CTL_NET, PF_INET, SO_ACCEPTFILTER, CTL_EOL);
+	sysctl_createv(clog, 0, NULL, NULL,
+	       CTLFLAG_PERMANENT,
+	       CTLTYPE_NODE, "http",
+	       SYSCTL_DESCR("HTTP accept filter"),
+	       NULL, 0, NULL, 0,
+	       CTL_NET, PF_INET, SO_ACCEPTFILTER, ACCF_HTTP, CTL_EOL);
+	sysctl_createv(clog, 0, NULL, NULL,
+	       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+	       CTLTYPE_INT, "parsehttpversion",
+	       SYSCTL_DESCR("Parse http version so that non "
+			    "1.x requests work"),
+	       NULL, 0, &parse_http_version, 0,
+	       CTL_NET, PF_INET, SO_ACCEPTFILTER, ACCF_HTTP,
+	       ACCFCTL_PARSEVER, CTL_EOL);
+}
+
 static int
 accf_httpready_modcmd(modcmd_t cmd, void *arg)
 {
-	static struct sysctllog *clog;
 	int error;
 
 	switch (cmd) {
 	case MODULE_CMD_INIT:
 		error = accept_filt_add(&accf_http_filter);
-		if (error != 0) {
-			return error;
-		}
-		sysctl_createv(&clog, 0, NULL, NULL,
-		       CTLFLAG_PERMANENT,
-		       CTLTYPE_NODE, "inet", NULL,
-		       NULL, 0, NULL, 0,
-		       CTL_NET, PF_INET, CTL_EOL);
-		sysctl_createv(&clog, 0, NULL, NULL,
-		       CTLFLAG_PERMANENT,
-		       CTLTYPE_NODE, "accf", NULL,
-		       NULL, 0, NULL, 0,
-		       CTL_NET, PF_INET, SO_ACCEPTFILTER, CTL_EOL);
-		sysctl_createv(&clog, 0, NULL, NULL,
-		       CTLFLAG_PERMANENT,
-		       CTLTYPE_NODE, "http",
-		       SYSCTL_DESCR("HTTP accept filter"),
-		       NULL, 0, NULL, 0,
-		       CTL_NET, PF_INET, SO_ACCEPTFILTER, ACCF_HTTP, CTL_EOL);
-		sysctl_createv(&clog, 0, NULL, NULL,
-		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
-		       CTLTYPE_INT, "parsehttpversion",
-		       SYSCTL_DESCR("Parse http version so that non "
-				    "1.x requests work"),
-		       NULL, 0, &parse_http_version, 0,
-		       CTL_NET, PF_INET, SO_ACCEPTFILTER, ACCF_HTTP,
-		       ACCFCTL_PARSEVER, CTL_EOL);
 		return 0;
 
 	case MODULE_CMD_FINI:
 		error = accept_filt_del(&accf_http_filter);
-		if (error != 0) {
-			return error;
-		}
-		sysctl_teardown(&clog);
-		return 0;
+		return error;
 
 	default:
 		return ENOTTY;

Index: src/sys/nfs/nfs_vfsops.c
diff -u src/sys/nfs/nfs_vfsops.c:1.239 src/sys/nfs/nfs_vfsops.c:1.240
--- src/sys/nfs/nfs_vfsops.c:1.239	Thu Feb 27 22:12:54 2020
+++ src/sys/nfs/nfs_vfsops.c	Mon Mar 16 21:20:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_vfsops.c,v 1.239 2020/02/27 22:12:54 ad Exp $	*/
+/*	$NetBSD: nfs_vfsops.c,v 1.240 2020/03/16 21:20:11 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993, 1995
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_vfsops.c,v 1.239 2020/02/27 22:12:54 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_vfsops.c,v 1.240 2020/03/16 21:20:11 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_nfs.h"
@@ -131,12 +131,9 @@ struct vfsops nfs_vfsops = {
 
 extern u_int32_t nfs_procids[NFS_NPROCS];
 extern u_int32_t nfs_prog, nfs_vers;
-static struct sysctllog *nfs_clog;
 
 static int nfs_mount_diskless(struct nfs_dlmount *, const char *,
     struct mount **, struct vnode **, struct lwp *);
-static void nfs_sysctl_init(void);
-static void nfs_sysctl_fini(void);
 
 static int
 nfs_modcmd(modcmd_t cmd, void *arg)
@@ -146,15 +143,9 @@ nfs_modcmd(modcmd_t cmd, void *arg)
 	switch (cmd) {
 	case MODULE_CMD_INIT:
 		error = vfs_attach(&nfs_vfsops);
-		if (error == 0) {
-			nfs_sysctl_init();
-		}
 		return error;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&nfs_vfsops);
-		if (error == 0) {
-			nfs_sysctl_fini();
-		}
 		return error;
 	default:
 		return ENOTTY;
@@ -1032,11 +1023,10 @@ sysctl_vfs_nfs_iothreads(SYSCTLFN_ARGS)
 	return nfs_set_niothreads(val);
 }
 
-static void
-nfs_sysctl_init(void)
+SYSCTL_SETUP(nfs_sysctl_init, "nfs sysctl")
 {
 
-	sysctl_createv(&nfs_clog, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "nfs",
 		       SYSCTL_DESCR("NFS vfs options"),
@@ -1048,13 +1038,13 @@ nfs_sysctl_init(void)
 	 * "2" is the order as taken from sys/mount.h
 	 */
 
-	sysctl_createv(&nfs_clog, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_STRUCT, "nfsstats",
 		       SYSCTL_DESCR("NFS operation statistics"),
 		       NULL, 0, &nfsstats, sizeof(nfsstats),
 		       CTL_VFS, 2, NFS_NFSSTATS, CTL_EOL);
-	sysctl_createv(&nfs_clog, 0, NULL, NULL,
+	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "iothreads",
 		       SYSCTL_DESCR("Number of NFS client processes desired"),
@@ -1062,13 +1052,6 @@ nfs_sysctl_init(void)
 		       CTL_VFS, 2, NFS_IOTHREADS, CTL_EOL);
 }
 
-static void
-nfs_sysctl_fini(void)
-{
-
-	sysctl_teardown(&nfs_clog);
-}
-
 /* ARGSUSED */
 int
 nfs_fhtovp(struct mount *mp, struct fid *fid, int lktype, struct vnode **vpp)

Index: src/sys/opencrypto/crypto.c
diff -u src/sys/opencrypto/crypto.c:1.112 src/sys/opencrypto/crypto.c:1.113
--- src/sys/opencrypto/crypto.c:1.112	Sat Feb  1 13:48:08 2020
+++ src/sys/opencrypto/crypto.c	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: crypto.c,v 1.112 2020/02/01 13:48:08 riastradh Exp $ */
+/*	$NetBSD: crypto.c,v 1.113 2020/03/16 21:20:12 pgoyette Exp $ */
 /*	$FreeBSD: src/sys/opencrypto/crypto.c,v 1.4.2.5 2003/02/26 00:14:05 sam Exp $	*/
 /*	$OpenBSD: crypto.c,v 1.41 2002/07/17 23:52:38 art Exp $	*/
 
@@ -53,7 +53,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: crypto.c,v 1.112 2020/02/01 13:48:08 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: crypto.c,v 1.113 2020/03/16 21:20:12 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/reboot.h>
@@ -383,8 +383,7 @@ int	crypto_userasymcrypto = 1;	/* userla
  */
 int	crypto_devallowsoft = 1;	/* only use hardware crypto */
 
-static void
-sysctl_opencrypto_setup(struct sysctllog **clog)
+SYSCTL_SETUP(sysctl_opencrypto_setup, "opencrypto sysctl")
 {
 	const struct sysctlnode *ocnode;
 	const struct sysctlnode *retqnode, *retkqnode;
@@ -519,8 +518,6 @@ static struct cryptostats cryptostats;
 static	int crypto_timing = 0;
 #endif
 
-static struct sysctllog *sysctl_opencrypto_clog;
-
 static void
 crypto_crp_ret_qs_init(void)
 {
@@ -587,8 +584,6 @@ crypto_init0(void)
 		return crypto_destroy(false);
 	}
 
-	sysctl_opencrypto_setup(&sysctl_opencrypto_clog);
-
 	return 0;
 }
 
@@ -655,9 +650,6 @@ crypto_destroy(bool exit_kthread)
 		}
 	}
 
-	if (sysctl_opencrypto_clog != NULL)
-		sysctl_teardown(&sysctl_opencrypto_clog);
-
 	if (crypto_ret_si != NULL)
 		softint_disestablish(crypto_ret_si);
 

Index: src/sys/secmodel/bsd44/bsd44.h
diff -u src/sys/secmodel/bsd44/bsd44.h:1.6 src/sys/secmodel/bsd44/bsd44.h:1.7
--- src/sys/secmodel/bsd44/bsd44.h:1.6	Sun Dec  4 19:25:00 2011
+++ src/sys/secmodel/bsd44/bsd44.h	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bsd44.h,v 1.6 2011/12/04 19:25:00 jym Exp $ */
+/* $NetBSD: bsd44.h,v 1.7 2020/03/16 21:20:12 pgoyette Exp $ */
 /*-
  * Copyright (c) 2006 Elad Efrat <e...@netbsd.org>
  * All rights reserved.
@@ -36,6 +36,4 @@ void secmodel_bsd44_init(void);
 void secmodel_bsd44_start(void);
 void secmodel_bsd44_stop(void);
 
-void sysctl_security_bsd44_setup(struct sysctllog **);
-
 #endif /* !_SECMODEL_BSD44_BSD44_H_ */

Index: src/sys/secmodel/bsd44/secmodel_bsd44.c
diff -u src/sys/secmodel/bsd44/secmodel_bsd44.c:1.16 src/sys/secmodel/bsd44/secmodel_bsd44.c:1.17
--- src/sys/secmodel/bsd44/secmodel_bsd44.c:1.16	Tue Feb 25 18:30:13 2014
+++ src/sys/secmodel/bsd44/secmodel_bsd44.c	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: secmodel_bsd44.c,v 1.16 2014/02/25 18:30:13 pooka Exp $ */
+/* $NetBSD: secmodel_bsd44.c,v 1.17 2020/03/16 21:20:12 pgoyette Exp $ */
 /*-
  * Copyright (c) 2006 Elad Efrat <e...@netbsd.org>
  * All rights reserved.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44.c,v 1.16 2014/02/25 18:30:13 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44.c,v 1.17 2020/03/16 21:20:12 pgoyette Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -46,10 +46,8 @@ __KERNEL_RCSID(0, "$NetBSD: secmodel_bsd
 MODULE(MODULE_CLASS_SECMODEL, secmodel_bsd44, "suser,securelevel,extensions");
 
 static secmodel_t bsd44_sm;
-static struct sysctllog *sysctl_bsd44_log;
 
-void
-sysctl_security_bsd44_setup(struct sysctllog **clog)
+SYSCTL_SETUP(sysctl_security_bsd44_setup, "secmodel_bsd44 sysctl")
 {
 	const struct sysctlnode *rnode;
 
@@ -108,11 +106,9 @@ secmodel_bsd44_modcmd(modcmd_t cmd, void
 
 		secmodel_bsd44_init();
 		secmodel_bsd44_start();
-		sysctl_security_bsd44_setup(&sysctl_bsd44_log);
 		break;
 
 	case MODULE_CMD_FINI:
-		sysctl_teardown(&sysctl_bsd44_log);
 		secmodel_bsd44_stop();
 
 		error = secmodel_deregister(bsd44_sm);

Index: src/sys/secmodel/extensions/secmodel_extensions.c
diff -u src/sys/secmodel/extensions/secmodel_extensions.c:1.11 src/sys/secmodel/extensions/secmodel_extensions.c:1.12
--- src/sys/secmodel/extensions/secmodel_extensions.c:1.11	Fri Feb 21 00:26:23 2020
+++ src/sys/secmodel/extensions/secmodel_extensions.c	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: secmodel_extensions.c,v 1.11 2020/02/21 00:26:23 joerg Exp $ */
+/* $NetBSD: secmodel_extensions.c,v 1.12 2020/03/16 21:20:12 pgoyette Exp $ */
 /*-
  * Copyright (c) 2011 Elad Efrat <e...@netbsd.org>
  * All rights reserved.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: secmodel_extensions.c,v 1.11 2020/02/21 00:26:23 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: secmodel_extensions.c,v 1.12 2020/03/16 21:20:12 pgoyette Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -57,7 +57,6 @@ int user_set_dbregs;
 static kauth_listener_t l_system, l_process, l_network;
 
 static secmodel_t extensions_sm;
-static struct sysctllog *extensions_sysctl_log;
 
 static void secmodel_extensions_init(void);
 static void secmodel_extensions_start(void);
@@ -75,8 +74,8 @@ static int secmodel_extensions_process_c
 static int secmodel_extensions_network_cb(kauth_cred_t, kauth_action_t,
     void *, void *, void *, void *, void *);
 
-static void
-sysctl_security_extensions_setup(struct sysctllog **clog)
+SYSCTL_SETUP(sysctl_security_extensions_setup,
+    "security extensions sysctl")
 {
 	const struct sysctlnode *rnode, *rnode2;
 
@@ -308,11 +307,9 @@ extensions_modcmd(modcmd_t cmd, void *ar
 
 		secmodel_extensions_init();
 		secmodel_extensions_start();
-		sysctl_security_extensions_setup(&extensions_sysctl_log);
 		break;
 
 	case MODULE_CMD_FINI:
-		sysctl_teardown(&extensions_sysctl_log);
 		secmodel_extensions_stop();
 
 		error = secmodel_deregister(extensions_sm);

Index: src/sys/secmodel/overlay/secmodel_overlay.c
diff -u src/sys/secmodel/overlay/secmodel_overlay.c:1.13 src/sys/secmodel/overlay/secmodel_overlay.c:1.14
--- src/sys/secmodel/overlay/secmodel_overlay.c:1.13	Tue Feb 25 18:30:13 2014
+++ src/sys/secmodel/overlay/secmodel_overlay.c	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: secmodel_overlay.c,v 1.13 2014/02/25 18:30:13 pooka Exp $ */
+/* $NetBSD: secmodel_overlay.c,v 1.14 2020/03/16 21:20:12 pgoyette Exp $ */
 /*-
  * Copyright (c) 2006 Elad Efrat <e...@netbsd.org>
  * All rights reserved.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: secmodel_overlay.c,v 1.13 2014/02/25 18:30:13 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: secmodel_overlay.c,v 1.14 2020/03/16 21:20:12 pgoyette Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -68,7 +68,6 @@ static kauth_listener_t l_generic, l_sys
     l_device, l_vnode;
 
 static secmodel_t overlay_sm;
-static struct sysctllog *sysctl_overlay_log;
 
 /*
  * Initialize the overlay security model.
@@ -127,8 +126,7 @@ secmodel_overlay_init(void)
 	    secmodel_securelevel_device_cb, NULL);
 }
 
-void
-sysctl_security_overlay_setup(struct sysctllog **clog)
+SYSCTL_SETUP(sysctl_security_overlay_setup, "secmod overlay sysctl")
 {
 	const struct sysctlnode *rnode;
 
@@ -207,11 +205,9 @@ secmodel_overlay_modcmd(modcmd_t cmd, vo
 		secmodel_suser_stop();
 		secmodel_securelevel_stop();
 		secmodel_overlay_start();
-		sysctl_security_overlay_setup(&sysctl_overlay_log);
 		break;
 
 	case MODULE_CMD_FINI:
-		sysctl_teardown(&sysctl_overlay_log);
 		secmodel_overlay_stop();
 
 		error = secmodel_deregister(overlay_sm);

Index: src/sys/secmodel/securelevel/secmodel_securelevel.c
diff -u src/sys/secmodel/securelevel/secmodel_securelevel.c:1.33 src/sys/secmodel/securelevel/secmodel_securelevel.c:1.34
--- src/sys/secmodel/securelevel/secmodel_securelevel.c:1.33	Fri Feb 21 00:26:23 2020
+++ src/sys/secmodel/securelevel/secmodel_securelevel.c	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: secmodel_securelevel.c,v 1.33 2020/02/21 00:26:23 joerg Exp $ */
+/* $NetBSD: secmodel_securelevel.c,v 1.34 2020/03/16 21:20:12 pgoyette Exp $ */
 /*-
  * Copyright (c) 2006 Elad Efrat <e...@netbsd.org>
  * All rights reserved.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: secmodel_securelevel.c,v 1.33 2020/02/21 00:26:23 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: secmodel_securelevel.c,v 1.34 2020/03/16 21:20:12 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_insecure.h"
@@ -65,7 +65,6 @@ static kauth_listener_t l_system, l_proc
     l_vnode;
 
 static secmodel_t securelevel_sm;
-static struct sysctllog *securelevel_sysctl_log;
 
 /*
  * Sysctl helper routine for securelevel. Ensures that the value only rises
@@ -92,8 +91,7 @@ secmodel_securelevel_sysctl(SYSCTLFN_ARG
 	return (error);
 }
 
-void
-sysctl_security_securelevel_setup(struct sysctllog **clog)
+SYSCTL_SETUP(sysctl_security_securelevel_setup, "securelevel sysctl")
 {
 	const struct sysctlnode *rnode, *rnode2;
 
@@ -219,11 +217,9 @@ securelevel_modcmd(modcmd_t cmd, void *a
 			    "returned %d\n", error);
 
 		secmodel_securelevel_start();
-		sysctl_security_securelevel_setup(&securelevel_sysctl_log);
 		break;
 
 	case MODULE_CMD_FINI:
-		sysctl_teardown(&securelevel_sysctl_log);
 		secmodel_securelevel_stop();
 
 		error = secmodel_deregister(securelevel_sm);

Index: src/sys/secmodel/securelevel/securelevel.h
diff -u src/sys/secmodel/securelevel/securelevel.h:1.4 src/sys/secmodel/securelevel/securelevel.h:1.5
--- src/sys/secmodel/securelevel/securelevel.h:1.4	Sun Dec  4 19:25:00 2011
+++ src/sys/secmodel/securelevel/securelevel.h	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: securelevel.h,v 1.4 2011/12/04 19:25:00 jym Exp $ */
+/* $NetBSD: securelevel.h,v 1.5 2020/03/16 21:20:12 pgoyette Exp $ */
 /*-
  * Copyright (c) 2006 Elad Efrat <e...@netbsd.org>
  * All rights reserved.
@@ -38,8 +38,6 @@ void secmodel_securelevel_init(void);
 void secmodel_securelevel_start(void);
 void secmodel_securelevel_stop(void);
 
-void sysctl_security_securelevel_setup(struct sysctllog **);
-
 int secmodel_securelevel_system_cb(kauth_cred_t, kauth_action_t, void *,
     void *, void *, void *, void *);
 int secmodel_securelevel_process_cb(kauth_cred_t, kauth_action_t, void *,

Index: src/sys/secmodel/suser/secmodel_suser.c
diff -u src/sys/secmodel/suser/secmodel_suser.c:1.51 src/sys/secmodel/suser/secmodel_suser.c:1.52
--- src/sys/secmodel/suser/secmodel_suser.c:1.51	Fri Feb 21 00:26:23 2020
+++ src/sys/secmodel/suser/secmodel_suser.c	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: secmodel_suser.c,v 1.51 2020/02/21 00:26:23 joerg Exp $ */
+/* $NetBSD: secmodel_suser.c,v 1.52 2020/03/16 21:20:12 pgoyette Exp $ */
 /*-
  * Copyright (c) 2006 Elad Efrat <e...@netbsd.org>
  * All rights reserved.
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: secmodel_suser.c,v 1.51 2020/02/21 00:26:23 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: secmodel_suser.c,v 1.52 2020/03/16 21:20:12 pgoyette Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -61,10 +61,8 @@ static kauth_listener_t l_generic, l_sys
     l_device, l_vnode;
 
 static secmodel_t suser_sm;
-static struct sysctllog *suser_sysctl_log;
 
-void
-sysctl_security_suser_setup(struct sysctllog **clog)
+SYSCTL_SETUP(sysctl_security_suser_setup, "secmodel_user sysctl")
 {
 	const struct sysctlnode *rnode;
 
@@ -163,11 +161,9 @@ suser_modcmd(modcmd_t cmd, void *arg)
 
 		secmodel_suser_init();
 		secmodel_suser_start();
-		sysctl_security_suser_setup(&suser_sysctl_log);
 		break;
 
 	case MODULE_CMD_FINI:
-		sysctl_teardown(&suser_sysctl_log);
 		secmodel_suser_stop();
 
 		error = secmodel_deregister(suser_sm);

Index: src/sys/secmodel/suser/suser.h
diff -u src/sys/secmodel/suser/suser.h:1.2 src/sys/secmodel/suser/suser.h:1.3
--- src/sys/secmodel/suser/suser.h:1.2	Sun Dec  4 19:25:01 2011
+++ src/sys/secmodel/suser/suser.h	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: suser.h,v 1.2 2011/12/04 19:25:01 jym Exp $ */
+/* $NetBSD: suser.h,v 1.3 2020/03/16 21:20:12 pgoyette Exp $ */
 /*-
  * Copyright (c) 2006 Elad Efrat <e...@netbsd.org>
  * All rights reserved.
@@ -36,8 +36,6 @@ void secmodel_suser_init(void);
 void secmodel_suser_start(void);
 void secmodel_suser_stop(void);
 
-void sysctl_security_suser_setup(struct sysctllog **);
-
 int secmodel_suser_generic_cb(kauth_cred_t, kauth_action_t, void *,
     void *, void *, void *, void *);
 int secmodel_suser_system_cb(kauth_cred_t, kauth_action_t, void *,

Index: src/sys/ufs/ext2fs/ext2fs_vfsops.c
diff -u src/sys/ufs/ext2fs/ext2fs_vfsops.c:1.216 src/sys/ufs/ext2fs/ext2fs_vfsops.c:1.217
--- src/sys/ufs/ext2fs/ext2fs_vfsops.c:1.216	Thu Feb 27 22:12:54 2020
+++ src/sys/ufs/ext2fs/ext2fs_vfsops.c	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ext2fs_vfsops.c,v 1.216 2020/02/27 22:12:54 ad Exp $	*/
+/*	$NetBSD: ext2fs_vfsops.c,v 1.217 2020/03/16 21:20:12 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1989, 1991, 1993, 1994
@@ -60,7 +60,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ext2fs_vfsops.c,v 1.216 2020/02/27 22:12:54 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ext2fs_vfsops.c,v 1.217 2020/03/16 21:20:12 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -105,8 +105,6 @@ MODULE(MODULE_CLASS_VFS, ext2fs, "ufs");
 int ext2fs_sbupdate(struct ufsmount *, int);
 static int ext2fs_sbfill(struct m_ext2fs *, int);
 
-static struct sysctllog *ext2fs_sysctl_log;
-
 extern const struct vnodeopv_desc ext2fs_vnodeop_opv_desc;
 extern const struct vnodeopv_desc ext2fs_specop_opv_desc;
 extern const struct vnodeopv_desc ext2fs_fifoop_opv_desc;
@@ -174,17 +172,10 @@ ext2fs_set_inode_guid(struct inode *ip)
 	}
 }
 
-static int
-ext2fs_modcmd(modcmd_t cmd, void *arg)
+SYSCTL_SETUP(ext2fs_sysctl_setup, "ext2fs sysctl")
 {
-	int error;
 
-	switch (cmd) {
-	case MODULE_CMD_INIT:
-		error = vfs_attach(&ext2fs_vfsops);
-		if (error != 0)
-			break;
-		sysctl_createv(&ext2fs_sysctl_log, 0, NULL, NULL,
+		sysctl_createv(clog, 0, NULL, NULL,
 			       CTLFLAG_PERMANENT,
 			       CTLTYPE_NODE, "ext2fs",
 			       SYSCTL_DESCR("Linux EXT2FS file system"),
@@ -195,12 +186,23 @@ ext2fs_modcmd(modcmd_t cmd, void *arg)
 		 * one more instance of the "number to vfs" mapping problem,
 		 * but "17" is the order as taken from sys/mount.h
 		 */
+}
+
+static int
+ext2fs_modcmd(modcmd_t cmd, void *arg)
+{
+	int error;
+
+	switch (cmd) {
+	case MODULE_CMD_INIT:
+		error = vfs_attach(&ext2fs_vfsops);
+		if (error != 0)
+			break;
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&ext2fs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&ext2fs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/ufs/ffs/ffs_vfsops.c
diff -u src/sys/ufs/ffs/ffs_vfsops.c:1.365 src/sys/ufs/ffs/ffs_vfsops.c:1.366
--- src/sys/ufs/ffs/ffs_vfsops.c:1.365	Thu Feb 27 22:12:54 2020
+++ src/sys/ufs/ffs/ffs_vfsops.c	Mon Mar 16 21:20:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffs_vfsops.c,v 1.365 2020/02/27 22:12:54 ad Exp $	*/
+/*	$NetBSD: ffs_vfsops.c,v 1.366 2020/03/16 21:20:12 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.365 2020/02/27 22:12:54 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.366 2020/03/16 21:20:12 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ffs.h"
@@ -120,8 +120,6 @@ static int ffs_is_appleufs(struct vnode 
 static int ffs_init_vnode(struct ufsmount *, struct vnode *, ino_t);
 static void ffs_deinit_vnode(struct ufsmount *, struct vnode *);
 
-static struct sysctllog *ffs_sysctl_log;
-
 static kauth_listener_t ffs_snapshot_listener;
 
 /* how many times ffs_init() was called */
@@ -254,6 +252,63 @@ ffs_snapshot_cb(kauth_cred_t cred, kauth
 	return result;
 }
 
+SYSCTL_SETUP(ffs_sysctl_setup, "ffs sysctls")
+{
+#ifdef UFS_EXTATTR
+	extern int ufs_extattr_autocreate;
+#endif
+	extern int ffs_log_changeopt;
+
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT,
+		       CTLTYPE_NODE, "ffs",
+		       SYSCTL_DESCR("Berkeley Fast File System"),
+		       NULL, 0, NULL, 0,
+		       CTL_VFS, 1, CTL_EOL);
+	/*
+	 * @@@ should we even bother with these first three?
+	 */
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+		       CTLTYPE_INT, "doclusterread", NULL,
+		       sysctl_notavail, 0, NULL, 0,
+		       CTL_VFS, 1, FFS_CLUSTERREAD, CTL_EOL);
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+		       CTLTYPE_INT, "doclusterwrite", NULL,
+		       sysctl_notavail, 0, NULL, 0,
+		       CTL_VFS, 1, FFS_CLUSTERWRITE, CTL_EOL);
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+		       CTLTYPE_INT, "doreallocblks", NULL,
+		       sysctl_notavail, 0, NULL, 0,
+		       CTL_VFS, 1, FFS_REALLOCBLKS, CTL_EOL);
+#if 0
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+		       CTLTYPE_INT, "doasyncfree",
+		       SYSCTL_DESCR("Release dirty blocks asynchronously"),
+		       NULL, 0, &doasyncfree, 0,
+		       CTL_VFS, 1, FFS_ASYNCFREE, CTL_EOL);
+#endif
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+		       CTLTYPE_INT, "log_changeopt",
+		       SYSCTL_DESCR("Log changes in optimization strategy"),
+		       NULL, 0, &ffs_log_changeopt, 0,
+		       CTL_VFS, 1, FFS_LOG_CHANGEOPT, CTL_EOL);
+#ifdef UFS_EXTATTR
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
+		       CTLTYPE_INT, "extattr_autocreate",
+		       SYSCTL_DESCR("Size of attribute for "
+				    "backing file autocreation"),
+		       NULL, 0, &ufs_extattr_autocreate, 0,
+		       CTL_VFS, 1, FFS_EXTATTR_AUTOCREATE, CTL_EOL);
+
+#endif /* UFS_EXTATTR */
+}
+
 static int
 ffs_modcmd(modcmd_t cmd, void *arg)
 {
@@ -262,10 +317,6 @@ ffs_modcmd(modcmd_t cmd, void *arg)
 #if 0
 	extern int doasyncfree;
 #endif
-#ifdef UFS_EXTATTR
-	extern int ufs_extattr_autocreate;
-#endif
-	extern int ffs_log_changeopt;
 
 	switch (cmd) {
 	case MODULE_CMD_INIT:
@@ -273,55 +324,6 @@ ffs_modcmd(modcmd_t cmd, void *arg)
 		if (error != 0)
 			break;
 
-		sysctl_createv(&ffs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT,
-			       CTLTYPE_NODE, "ffs",
-			       SYSCTL_DESCR("Berkeley Fast File System"),
-			       NULL, 0, NULL, 0,
-			       CTL_VFS, 1, CTL_EOL);
-		/*
-		 * @@@ should we even bother with these first three?
-		 */
-		sysctl_createv(&ffs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
-			       CTLTYPE_INT, "doclusterread", NULL,
-			       sysctl_notavail, 0, NULL, 0,
-			       CTL_VFS, 1, FFS_CLUSTERREAD, CTL_EOL);
-		sysctl_createv(&ffs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
-			       CTLTYPE_INT, "doclusterwrite", NULL,
-			       sysctl_notavail, 0, NULL, 0,
-			       CTL_VFS, 1, FFS_CLUSTERWRITE, CTL_EOL);
-		sysctl_createv(&ffs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
-			       CTLTYPE_INT, "doreallocblks", NULL,
-			       sysctl_notavail, 0, NULL, 0,
-			       CTL_VFS, 1, FFS_REALLOCBLKS, CTL_EOL);
-#if 0
-		sysctl_createv(&ffs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
-			       CTLTYPE_INT, "doasyncfree",
-			       SYSCTL_DESCR("Release dirty blocks asynchronously"),
-			       NULL, 0, &doasyncfree, 0,
-			       CTL_VFS, 1, FFS_ASYNCFREE, CTL_EOL);
-#endif
-		sysctl_createv(&ffs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
-			       CTLTYPE_INT, "log_changeopt",
-			       SYSCTL_DESCR("Log changes in optimization strategy"),
-			       NULL, 0, &ffs_log_changeopt, 0,
-			       CTL_VFS, 1, FFS_LOG_CHANGEOPT, CTL_EOL);
-#ifdef UFS_EXTATTR
-		sysctl_createv(&ffs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
-			       CTLTYPE_INT, "extattr_autocreate",
-			       SYSCTL_DESCR("Size of attribute for "
-					    "backing file autocreation"),
-			       NULL, 0, &ufs_extattr_autocreate, 0,
-			       CTL_VFS, 1, FFS_EXTATTR_AUTOCREATE, CTL_EOL);
-		
-#endif /* UFS_EXTATTR */
-
 		ffs_snapshot_listener = kauth_listen_scope(KAUTH_SCOPE_SYSTEM,
 		    ffs_snapshot_cb, NULL);
 		if (ffs_snapshot_listener == NULL)
@@ -332,7 +334,6 @@ ffs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_detach(&ffs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&ffs_sysctl_log);
 		if (ffs_snapshot_listener != NULL)
 			kauth_unlisten_scope(ffs_snapshot_listener);
 		break;

Index: src/sys/ufs/lfs/lfs_vfsops.c
diff -u src/sys/ufs/lfs/lfs_vfsops.c:1.376 src/sys/ufs/lfs/lfs_vfsops.c:1.377
--- src/sys/ufs/lfs/lfs_vfsops.c:1.376	Sat Mar 14 20:23:51 2020
+++ src/sys/ufs/lfs/lfs_vfsops.c	Mon Mar 16 21:20:13 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: lfs_vfsops.c,v 1.376 2020/03/14 20:23:51 ad Exp $	*/
+/*	$NetBSD: lfs_vfsops.c,v 1.377 2020/03/16 21:20:13 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003, 2007, 2007
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_vfsops.c,v 1.376 2020/03/14 20:23:51 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_vfsops.c,v 1.377 2020/03/16 21:20:13 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_lfs.h"
@@ -122,8 +122,6 @@ static int lfs_gop_write(struct vnode *,
 static int lfs_mountfs(struct vnode *, struct mount *, struct lwp *);
 static int lfs_flushfiles(struct mount *, int);
 
-static struct sysctllog *lfs_sysctl_log;
-
 extern const struct vnodeopv_desc lfs_vnodeop_opv_desc;
 extern const struct vnodeopv_desc lfs_specop_opv_desc;
 extern const struct vnodeopv_desc lfs_fifoop_opv_desc;
@@ -201,8 +199,7 @@ sysctl_lfs_dostats(SYSCTLFN_ARGS)
 	return (0);
 }
 
-static void
-lfs_sysctl_setup(struct sysctllog **clog)
+SYSCTL_SETUP(lfs_sysctl_setup, "lfs sysctl")
 {
 	int i;
 	extern int lfs_writeindir, lfs_dostats, lfs_clean_vnhead,
@@ -355,7 +352,6 @@ lfs_modcmd(modcmd_t cmd, void *arg)
 			syscall_disestablish(NULL, lfs_syscalls);
 			break;
 		}
-		lfs_sysctl_setup(&lfs_sysctl_log);
 		cv_init(&lfs_allclean_wakeup, "segment");
 		break;
 	case MODULE_CMD_FINI:
@@ -363,7 +359,6 @@ lfs_modcmd(modcmd_t cmd, void *arg)
 		if (error != 0)
 			break;
 		syscall_disestablish(NULL, lfs_syscalls);
-		sysctl_teardown(&lfs_sysctl_log);
 		cv_destroy(&lfs_allclean_wakeup);
 		break;
 	default:

Index: src/sys/ufs/mfs/mfs_vfsops.c
diff -u src/sys/ufs/mfs/mfs_vfsops.c:1.113 src/sys/ufs/mfs/mfs_vfsops.c:1.114
--- src/sys/ufs/mfs/mfs_vfsops.c:1.113	Mon Apr 17 08:32:02 2017
+++ src/sys/ufs/mfs/mfs_vfsops.c	Mon Mar 16 21:20:13 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: mfs_vfsops.c,v 1.113 2017/04/17 08:32:02 hannken Exp $	*/
+/*	$NetBSD: mfs_vfsops.c,v 1.114 2020/03/16 21:20:13 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1989, 1990, 1993, 1994
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mfs_vfsops.c,v 1.113 2017/04/17 08:32:02 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfs_vfsops.c,v 1.114 2020/03/16 21:20:13 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -76,8 +76,6 @@ static int mfs_initcnt;
 
 extern int (**mfs_vnodeop_p)(void *);
 
-static struct sysctllog *mfs_sysctl_log;
-
 /*
  * mfs vfs operations.
  */
@@ -116,6 +114,23 @@ struct vfsops mfs_vfsops = {
 	.vfs_opv_descs = mfs_vnodeopv_descs
 };
 
+SYSCTL_SETUP(mfs_sysctl_setup, "mfs sysctl")
+{
+
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT|CTLFLAG_ALIAS,
+		       CTLTYPE_NODE, "mfs",
+		       SYSCTL_DESCR("Memory based file system"),
+		       NULL, 1, NULL, 0,
+		       CTL_VFS, 3, CTL_EOL);
+	/*
+	 * XXX the "1" and the "3" above could be dynamic, thereby
+	 * eliminating one more instance of the "number to vfs"
+	 * mapping problem, but they are in order as taken from
+	 * sys/mount.h
+	 */
+}
+
 static int
 mfs_modcmd(modcmd_t cmd, void *arg)
 {
@@ -126,24 +141,11 @@ mfs_modcmd(modcmd_t cmd, void *arg)
 		error = vfs_attach(&mfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_createv(&mfs_sysctl_log, 0, NULL, NULL,
-			       CTLFLAG_PERMANENT|CTLFLAG_ALIAS,
-			       CTLTYPE_NODE, "mfs",
-			       SYSCTL_DESCR("Memory based file system"),
-			       NULL, 1, NULL, 0,
-			       CTL_VFS, 3, CTL_EOL);
-		/*
-		 * XXX the "1" and the "3" above could be dynamic, thereby
-		 * eliminating one more instance of the "number to vfs"
-		 * mapping problem, but they are in order as taken from
-		 * sys/mount.h
-		 */
 		break;
 	case MODULE_CMD_FINI:
 		error = vfs_detach(&mfs_vfsops);
 		if (error != 0)
 			break;
-		sysctl_teardown(&mfs_sysctl_log);
 		break;
 	default:
 		error = ENOTTY;

Index: src/sys/ufs/ufs/ufs_dirhash.c
diff -u src/sys/ufs/ufs/ufs_dirhash.c:1.39 src/sys/ufs/ufs/ufs_dirhash.c:1.40
--- src/sys/ufs/ufs/ufs_dirhash.c:1.39	Sat Mar 14 18:08:40 2020
+++ src/sys/ufs/ufs/ufs_dirhash.c	Mon Mar 16 21:20:13 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ufs_dirhash.c,v 1.39 2020/03/14 18:08:40 ad Exp $	*/
+/*	$NetBSD: ufs_dirhash.c,v 1.40 2020/03/16 21:20:13 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 2001, 2002 Ian Dowse.  All rights reserved.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ufs_dirhash.c,v 1.39 2020/03/14 18:08:40 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ufs_dirhash.c,v 1.40 2020/03/16 21:20:13 pgoyette Exp $");
 
 /*
  * This implements a hash-based lookup scheme for UFS directories.
@@ -93,8 +93,6 @@ static TAILQ_HEAD(, dirhash) ufsdirhash_
 /* Protects: ufsdirhash_list, `dh_list' field, ufs_dirhashmem. */
 static kmutex_t ufsdirhash_lock;
 
-static struct sysctllog *ufsdirhash_sysctl_log;
-
 /*
  * Locking order:
  *	ufsdirhash_lock
@@ -1089,47 +1087,46 @@ ufsdirhash_recycle(int wanted)
 	return (0);
 }
 
-static void
-ufsdirhash_sysctl_init(void)
+SYSCTL_SETUP(ufsdirhash_sysctl_init, "ufs_dirhash sysctl")
 {
 	const struct sysctlnode *rnode, *cnode;
 
-	sysctl_createv(&ufsdirhash_sysctl_log, 0, NULL, &rnode,
+	sysctl_createv(clog, 0, NULL, &rnode,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "ufs",
 		       SYSCTL_DESCR("ufs"),
 		       NULL, 0, NULL, 0,
 		       CTL_VFS, CTL_CREATE, CTL_EOL);
 
-	sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &rnode,
+	sysctl_createv(clog, 0, &rnode, &rnode,
 		       CTLFLAG_PERMANENT,
 		       CTLTYPE_NODE, "dirhash",
 		       SYSCTL_DESCR("dirhash"),
 		       NULL, 0, NULL, 0,
 		       CTL_CREATE, CTL_EOL);
 
-	sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &cnode,
+	sysctl_createv(clog, 0, &rnode, &cnode,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "minblocks",
 		       SYSCTL_DESCR("minimum hashed directory size in blocks"),
 		       NULL, 0, &ufs_dirhashminblks, 0,
 		       CTL_CREATE, CTL_EOL);
 
-	sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &cnode,
+	sysctl_createv(clog, 0, &rnode, &cnode,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "maxmem",
 		       SYSCTL_DESCR("maximum dirhash memory usage"),
 		       NULL, 0, &ufs_dirhashmaxmem, 0,
 		       CTL_CREATE, CTL_EOL);
 
-	sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &cnode,
+	sysctl_createv(clog, 0, &rnode, &cnode,
 		       CTLFLAG_PERMANENT|CTLFLAG_READONLY,
 		       CTLTYPE_INT, "memused",
 		       SYSCTL_DESCR("current dirhash memory usage"),
 		       NULL, 0, &ufs_dirhashmem, 0,
 		       CTL_CREATE, CTL_EOL);
 
-	sysctl_createv(&ufsdirhash_sysctl_log, 0, &rnode, &cnode,
+	sysctl_createv(clog, 0, &rnode, &cnode,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "docheck",
 		       SYSCTL_DESCR("enable extra sanity checks"),
@@ -1147,7 +1144,6 @@ ufsdirhash_init(void)
 	ufsdirhash_cache = pool_cache_init(sizeof(struct dirhash), 0,
 	    0, 0, "dirhash", NULL, IPL_NONE, NULL, NULL, NULL);
 	TAILQ_INIT(&ufsdirhash_list);
-	ufsdirhash_sysctl_init();
 }
 
 void
@@ -1158,5 +1154,4 @@ ufsdirhash_done(void)
 	pool_cache_destroy(ufsdirhashblk_cache);
 	pool_cache_destroy(ufsdirhash_cache);
 	mutex_destroy(&ufsdirhash_lock);
-	sysctl_teardown(&ufsdirhash_sysctl_log);
 }

Reply via email to