--- src/sys/dev/usbmisc/ucom/ucom.c 2004/10/16 03:20:52 1.17 +++ src/sys/dev/usbmisc/ucom/ucom.c 2005/06/02 20:40:45 1.18 @@ -87,6 +87,7 @@ #include #include #include +#include #include #include @@ -203,7 +204,6 @@ int ucom_detach(struct ucom_softc *sc) { struct tty *tp = sc->sc_tty; - int s; int unit; DPRINTF(("ucom_detach: sc = %p, tp = %p\n", sc, sc->sc_tty)); @@ -230,12 +230,12 @@ ucom_detach(struct ucom_softc *sc) return (0); } - 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(); unit = device_get_unit(sc->sc_dev); cdevsw_remove(&ucom_cdevsw, UCOMUNIT_MASK, unit);