Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/kern autoconf(9), drvctl(4): Sprinkle kernel lock assert...



details:   https://anonhg.NetBSD.org/src/rev/3476e0636b7c
branches:  trunk
changeset: 379611:3476e0636b7c
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Sat Jun 12 12:12:11 2021 +0000

description:
autoconf(9), drvctl(4): Sprinkle kernel lock assertions.

diffstat:

 sys/kern/kern_drvctl.c   |  12 ++++++++++--
 sys/kern/subr_autoconf.c |  28 ++++++++++++++++++++++++++--
 2 files changed, 36 insertions(+), 4 deletions(-)

diffs (180 lines):

diff -r d4a22d64ceca -r 3476e0636b7c sys/kern/kern_drvctl.c
--- a/sys/kern/kern_drvctl.c    Sat Jun 12 12:11:59 2021 +0000
+++ b/sys/kern/kern_drvctl.c    Sat Jun 12 12:12:11 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_drvctl.c,v 1.46 2021/06/12 12:11:59 riastradh Exp $ */
+/* $NetBSD: kern_drvctl.c,v 1.47 2021/06/12 12:12:11 riastradh Exp $ */
 
 /*
  * Copyright (c) 2004
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_drvctl.c,v 1.46 2021/06/12 12:11:59 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_drvctl.c,v 1.47 2021/06/12 12:12:11 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -195,6 +195,8 @@ pmdevbyname(u_long cmd, struct devpmargs
 {
        device_t d;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        if ((d = device_find_by_xname(a->devname)) == NULL)
                return ENXIO;
 
@@ -221,6 +223,8 @@ listdevbyname(struct devlistargs *l)
        deviter_t di;
        int cnt = 0, idx, error = 0;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        if (*l->l_devname == '\0')
                d = NULL;
        else if (memchr(l->l_devname, 0, sizeof(l->l_devname)) == NULL)
@@ -251,6 +255,8 @@ detachdevbyname(const char *devname)
 {
        device_t d;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        if ((d = device_find_by_xname(devname)) == NULL)
                return ENXIO;
 
@@ -275,6 +281,8 @@ rescanbus(const char *busname, const cha
        device_t d;
        const struct cfiattrdata * const *ap;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        /* XXX there should be a way to get limits and defaults (per device)
           from config generated data */
        int locs[MAXLOCATORS];
diff -r d4a22d64ceca -r 3476e0636b7c sys/kern/subr_autoconf.c
--- a/sys/kern/subr_autoconf.c  Sat Jun 12 12:11:59 2021 +0000
+++ b/sys/kern/subr_autoconf.c  Sat Jun 12 12:12:11 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_autoconf.c,v 1.281 2021/06/12 12:11:49 riastradh Exp $ */
+/* $NetBSD: subr_autoconf.c,v 1.282 2021/06/12 12:12:11 riastradh Exp $ */
 
 /*
  * Copyright (c) 1996, 2000 Christopher G. Demetriou
@@ -79,7 +79,7 @@
 #define        __SUBR_AUTOCONF_PRIVATE /* see <sys/device.h> */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.281 2021/06/12 12:11:49 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.282 2021/06/12 12:12:11 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -377,6 +377,8 @@ config_init_component(struct cfdriver * 
 {
        int error;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        if ((error = frob_cfdrivervec(cfdriverv,
            config_cfdriver_attach, config_cfdriver_detach, "init", false))!= 0)
                return error;
@@ -404,6 +406,8 @@ config_fini_component(struct cfdriver * 
 {
        int error;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        if ((error = config_cfdata_detach(cfdatav)) != 0)
                return error;
        if ((error = frob_cfattachvec(cfattachv,
@@ -439,6 +443,9 @@ config_init_mi(void)
 void
 config_deferred(device_t dev)
 {
+
+       KASSERT(KERNEL_LOCKED_P());
+
        config_process_deferred(&deferred_config_queue, dev);
        config_process_deferred(&interrupt_config_queue, dev);
        config_process_deferred(&mountroot_config_queue, dev);
@@ -906,6 +913,7 @@ rescan_with_cfdata(const struct cfdata *
        const struct cfdata *cf1;
        deviter_t di;
 
+       KASSERT(KERNEL_LOCKED_P());
 
        /*
         * "alldevs" is likely longer than a modules's cfdata, so make it
@@ -939,6 +947,8 @@ config_cfdata_attach(cfdata_t cf, int sc
 {
        struct cftable *ct;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        ct = kmem_alloc(sizeof(*ct), KM_SLEEP);
        ct->ct_cfdata = cf;
        TAILQ_INSERT_TAIL(&allcftables, ct, ct_list);
@@ -1011,6 +1021,8 @@ config_match(device_t parent, cfdata_t c
 {
        struct cfattach *ca;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        ca = config_cfattach_lookup(cf->cf_name, cf->cf_atname);
        if (ca == NULL) {
                /* No attachment for this entry, oh well. */
@@ -1710,6 +1722,8 @@ config_vattach(device_t parent, cfdata_t
        struct cftable *ct;
        const char *drvname;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        dev = config_vdevalloc(parent, cf, tag, ap);
        if (!dev)
                panic("config_attach: allocation of device softc failed");
@@ -1782,6 +1796,8 @@ config_attach(device_t parent, cfdata_t 
        device_t dev;
        va_list ap;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        va_start(ap, tag);
        dev = config_vattach(parent, cf, aux, print, tag, ap);
        va_end(ap);
@@ -1803,6 +1819,8 @@ config_attach_pseudo(cfdata_t cf)
 {
        device_t dev;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        dev = config_devalloc(ROOT, cf, CFARG_EOL);
        if (!dev)
                return NULL;
@@ -1886,6 +1904,8 @@ config_detach(device_t dev, int flags)
        device_t d __diagused;
        int rv = 0;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        cf = dev->dv_cfdata;
        KASSERTMSG((cf == NULL || cf->cf_fstate == FSTATE_FOUND ||
                cf->cf_fstate == FSTATE_STAR),
@@ -2007,6 +2027,8 @@ config_detach_children(device_t parent, 
        deviter_t di;
        int error = 0;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        for (dv = deviter_first(&di, DEVITER_F_RW); dv != NULL;
             dv = deviter_next(&di)) {
                if (device_parent(dv) != parent)
@@ -2228,6 +2250,8 @@ config_process_deferred(struct deferred_
 {
        struct deferred_config *dc;
 
+       KASSERT(KERNEL_LOCKED_P());
+
        mutex_enter(&config_misc_lock);
        dc = TAILQ_FIRST(queue);
        while (dc) {



Home | Main Index | Thread Index | Old Index