Module Name: src Committed By: martin Date: Sun May 31 10:27:26 UTC 2020
Modified Files: src/sys/dev/usb [netbsd-8]: usb.c Log Message: Pull up following revision(s) (requested by skrll in ticket #1551): sys/dev/usb/usb.c: revision 1.187 Don't allow open of /dev/usb if there are no attached busses. PR kern/55303 mutex_vector_enter,512: uninitialized lock To generate a diff of this commit: cvs rdiff -u -r1.165.6.5 -r1.165.6.6 src/sys/dev/usb/usb.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/usb.c diff -u src/sys/dev/usb/usb.c:1.165.6.5 src/sys/dev/usb/usb.c:1.165.6.6 --- src/sys/dev/usb/usb.c:1.165.6.5 Sat Nov 16 16:30:09 2019 +++ src/sys/dev/usb/usb.c Sun May 31 10:27:26 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: usb.c,v 1.165.6.5 2019/11/16 16:30:09 martin Exp $ */ +/* $NetBSD: usb.c,v 1.165.6.6 2020/05/31 10:27:26 martin 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.165.6.5 2019/11/16 16:30:09 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.165.6.6 2020/05/31 10:27:26 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -179,6 +179,11 @@ Static void usb_create_event_thread(devi Static void usb_event_thread(void *); Static void usb_task_thread(void *); +/* + * Count of USB busses + */ +int nusbbusses = 0; + #define USB_MAX_EVENTS 100 struct usb_event_q { struct usb_event ue; @@ -331,6 +336,9 @@ usb_doattach(device_t self) USBHIST_FUNC(); USBHIST_CALLED(usbdebug); + /* Protected by KERNEL_LOCK */ + nusbbusses++; + sc->sc_bus->ub_usbctl = self; sc->sc_port.up_power = USB_MAX_POWER; @@ -639,6 +647,9 @@ usbopen(dev_t dev, int flag, int mode, s int unit = minor(dev); struct usb_softc *sc; + if (nusbbusses == 0) + return ENXIO; + if (unit == USB_DEV_MINOR) { if (usb_dev_open) return EBUSY;