Module Name: src Committed By: riastradh Date: Sat Jun 12 12:13:11 UTC 2021
Modified Files: src/sys/dev/usb: uhub.c usb.c usb_subr.c xhci.c Log Message: usb(4): Sprinkle kernel lock assertions. To generate a diff of this commit: cvs rdiff -u -r1.148 -r1.149 src/sys/dev/usb/uhub.c cvs rdiff -u -r1.194 -r1.195 src/sys/dev/usb/usb.c cvs rdiff -u -r1.252 -r1.253 src/sys/dev/usb/usb_subr.c cvs rdiff -u -r1.144 -r1.145 src/sys/dev/usb/xhci.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/dev/usb/uhub.c diff -u src/sys/dev/usb/uhub.c:1.148 src/sys/dev/usb/uhub.c:1.149 --- src/sys/dev/usb/uhub.c:1.148 Sat Jun 12 12:11:01 2021 +++ src/sys/dev/usb/uhub.c Sat Jun 12 12:13:10 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: uhub.c,v 1.148 2021/06/12 12:11:01 riastradh Exp $ */ +/* $NetBSD: uhub.c,v 1.149 2021/06/12 12:13:10 riastradh Exp $ */ /* $FreeBSD: src/sys/dev/usb/uhub.c,v 1.18 1999/11/17 22:33:43 n_hibma Exp $ */ /* $OpenBSD: uhub.c,v 1.86 2015/06/29 18:27:40 mpi Exp $ */ @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uhub.c,v 1.148 2021/06/12 12:11:01 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uhub.c,v 1.149 2021/06/12 12:13:10 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -533,6 +533,8 @@ uhub_explore(struct usbd_device *dev) device_unit(sc->sc_dev), (uintptr_t)dev, dev->ud_addr, dev->ud_speed); + KASSERT(KERNEL_LOCKED_P()); + if (!sc->sc_running) return USBD_NOT_STARTED; @@ -930,6 +932,8 @@ uhub_rescan(device_t self, const char *i struct usbd_device *dev; int port; + KASSERT(KERNEL_LOCKED_P()); + if (uhub_explore_enter(sc) != 0) return EBUSY; for (port = 1; port <= hub->uh_hubdesc.bNbrPorts; port++) { @@ -953,6 +957,8 @@ uhub_childdet(device_t self, device_t ch int port; int i; + KASSERT(KERNEL_LOCKED_P()); + if (!devhub->ud_hub) /* should never happen; children are only created after init */ panic("hub not fully initialised, but child deleted?"); Index: src/sys/dev/usb/usb.c diff -u src/sys/dev/usb/usb.c:1.194 src/sys/dev/usb/usb.c:1.195 --- src/sys/dev/usb/usb.c:1.194 Sat Jun 12 12:11:38 2021 +++ src/sys/dev/usb/usb.c Sat Jun 12 12:13:10 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: usb.c,v 1.194 2021/06/12 12:11:38 riastradh Exp $ */ +/* $NetBSD: usb.c,v 1.195 2021/06/12 12:13:10 riastradh Exp $ */ /* * Copyright (c) 1998, 2002, 2008, 2012 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.194 2021/06/12 12:11:38 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.195 2021/06/12 12:13:10 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -453,6 +453,8 @@ usb_doattach(device_t self) USBHIST_FUNC(); USBHIST_CALLED(usbdebug); + KASSERT(KERNEL_LOCKED_P()); + /* Protected by KERNEL_LOCK */ nusbbusses++; @@ -690,6 +692,8 @@ usb_event_thread(void *arg) USBHIST_FUNC(); USBHIST_CALLED(usbdebug); + KASSERT(KERNEL_LOCKED_P()); + /* * In case this controller is a companion controller to an * EHCI controller we need to wait until the EHCI controller @@ -1146,6 +1150,7 @@ usb_discover(struct usb_softc *sc) USBHIST_FUNC(); USBHIST_CALLED(usbdebug); + KASSERT(KERNEL_LOCKED_P()); KASSERT(mutex_owned(bus->ub_lock)); if (usb_noexplore > 1) Index: src/sys/dev/usb/usb_subr.c diff -u src/sys/dev/usb/usb_subr.c:1.252 src/sys/dev/usb/usb_subr.c:1.253 --- src/sys/dev/usb/usb_subr.c:1.252 Sat Jun 12 12:11:27 2021 +++ src/sys/dev/usb/usb_subr.c Sat Jun 12 12:13:10 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: usb_subr.c,v 1.252 2021/06/12 12:11:27 riastradh Exp $ */ +/* $NetBSD: usb_subr.c,v 1.253 2021/06/12 12:13:10 riastradh Exp $ */ /* $FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.18 1999/11/17 22:33:47 n_hibma Exp $ */ /* @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usb_subr.c,v 1.252 2021/06/12 12:11:27 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usb_subr.c,v 1.253 2021/06/12 12:13:10 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -957,6 +957,9 @@ usbd_attachinterfaces(device_t parent, s int i, j, loc; device_t dv; + /* Needed for access to dev->ud_subdevs. */ + KASSERT(KERNEL_LOCKED_P()); + nifaces = dev->ud_cdesc->bNumInterface; ifaces = kmem_zalloc(nifaces * sizeof(*ifaces), KM_SLEEP); for (i = 0; i < nifaces; i++) { @@ -1047,6 +1050,8 @@ usbd_probe_and_attach(device_t parent, s int confi, nifaces; usbd_status err; + KASSERT(KERNEL_LOCKED_P()); + /* First try with device specific drivers. */ err = usbd_attachwholedevice(parent, dev, port, 0); if (dev->ud_nifaces_claimed || err) @@ -1111,6 +1116,8 @@ usbd_reattach_device(device_t parent, st { int i, loc; + KASSERT(KERNEL_LOCKED_P()); + if (locators != NULL) { loc = locators[USBIFIFCF_PORT]; if (loc != USBIFIFCF_PORT_DEFAULT && loc != port) @@ -1169,6 +1176,8 @@ usbd_new_device(device_t parent, struct int i; int p; + KASSERT(KERNEL_LOCKED_P()); + if (bus->ub_methods->ubm_newdev != NULL) return (bus->ub_methods->ubm_newdev)(parent, bus, depth, speed, port, up); Index: src/sys/dev/usb/xhci.c diff -u src/sys/dev/usb/xhci.c:1.144 src/sys/dev/usb/xhci.c:1.145 --- src/sys/dev/usb/xhci.c:1.144 Sun Jun 6 18:37:20 2021 +++ src/sys/dev/usb/xhci.c Sat Jun 12 12:13:10 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: xhci.c,v 1.144 2021/06/06 18:37:20 jdolecek Exp $ */ +/* $NetBSD: xhci.c,v 1.145 2021/06/12 12:13:10 riastradh Exp $ */ /* * Copyright (c) 2013 Jonathan A. Kollasch @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xhci.c,v 1.144 2021/06/06 18:37:20 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xhci.c,v 1.145 2021/06/12 12:13:10 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -2778,6 +2778,8 @@ xhci_new_device(device_t parent, struct XHCIHIST_CALLARGS("port %ju depth %ju speed %ju up %#jx", port, depth, speed, (uintptr_t)up); + KASSERT(KERNEL_LOCKED_P()); + dev = kmem_zalloc(sizeof(*dev), KM_SLEEP); dev->ud_bus = bus; dev->ud_quirks = &usbd_no_quirk;