Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/xen/xenbus Grab KERNEL_LOCK before calling config_f...



details:   https://anonhg.NetBSD.org/src/rev/5f4c24a4017b
branches:  trunk
changeset: 379734:5f4c24a4017b
user:      bouyer <bouyer%NetBSD.org@localhost>
date:      Wed Jun 16 10:49:50 2021 +0000

description:
Grab KERNEL_LOCK before calling config_found()

diffstat:

 sys/arch/xen/xenbus/xenbus_probe.c |  9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diffs (41 lines):

diff -r c9b6c70734d9 -r 5f4c24a4017b sys/arch/xen/xenbus/xenbus_probe.c
--- a/sys/arch/xen/xenbus/xenbus_probe.c        Wed Jun 16 10:21:51 2021 +0000
+++ b/sys/arch/xen/xenbus/xenbus_probe.c        Wed Jun 16 10:49:50 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: xenbus_probe.c,v 1.56 2021/04/24 23:36:52 thorpej Exp $ */
+/* $NetBSD: xenbus_probe.c,v 1.57 2021/06/16 10:49:50 bouyer Exp $ */
 /******************************************************************************
  * Talks to Xen Store to figure out what devices we have.
  *
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xenbus_probe.c,v 1.56 2021/04/24 23:36:52 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xenbus_probe.c,v 1.57 2021/06/16 10:49:50 bouyer Exp $");
 
 #if 0
 #define DPRINTK(fmt, args...) \
@@ -469,8 +469,11 @@ xenbus_probe_device_type(const char *pat
                                kmem_free(xbusd, xbusd->xbusd_sz);
                                break;
                        }
+
+                       KERNEL_LOCK(1, curlwp);
                        xbusd->xbusd_u.f.f_dev = config_found(xenbus_dev,
                            &xa, xenbus_print, CFARG_EOL);
+                       KERNEL_UNLOCK_ONE(curlwp);
                        if (xbusd->xbusd_u.f.f_dev == NULL) {
                                kmem_free(xbusd, xbusd->xbusd_sz);
                                continue;
@@ -652,8 +655,10 @@ xenbus_probe(void *unused)
        register_xenbus_watch(&be_watch);
 
        /* attach balloon. */
+       KERNEL_LOCK(1, curlwp);
        config_found(xenbus_dev, &balloon_xa, xenbus_print,
            CFARG_EOL);
+       KERNEL_UNLOCK_ONE(curlwp);
 
        shutdown_xenbus_setup();
 



Home | Main Index | Thread Index | Old Index