--- src/sys/dev/usbmisc/urio/urio.c 2004/05/19 22:52:52 1.10 +++ src/sys/dev/usbmisc/urio/urio.c 2005/06/02 20:41:04 1.11 @@ -72,6 +72,7 @@ #include #include #include +#include #include #include @@ -626,7 +627,7 @@ USB_DETACH(urio) } } - s = splusb(); + crit_enter(); if (--sc->sc_refcnt >= 0) { /* Wake everyone */ for (i = 0; i < USB_MAX_ENDPOINTS; i++) @@ -634,7 +635,7 @@ USB_DETACH(urio) /* Wait for processes to go away. */ usb_detach_wait(USBDEV(sc->sc_dev)); } - splx(s); + crit_exit(); #else if (sc->sc_pipeh_in) usbd_abort_pipe(sc->sc_pipeh_in); @@ -642,12 +643,12 @@ USB_DETACH(urio) if (sc->sc_pipeh_out) usbd_abort_pipe(sc->sc_pipeh_out); - s = splusb(); + crit_enter(); if (--sc->sc_refcnt >= 0) { /* Wait for processes to go away. */ usb_detach_wait(USBDEV(sc->sc_dev)); } - splx(s); + crit_exit(); #endif #if defined(__NetBSD__) || defined(__OpenBSD__)