Date: Fri, 27 Aug 2004 19:07:11 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: pjd@FreeBSD.org Cc: freebsd-current@FreeBSD.org Subject: Re: Bogus usage of tsleep(9) in USB. Message-ID: <20040827.190711.77422828.imp@bsdimp.com> In-Reply-To: <20040820090006.GX30151@darkness.comp.waw.pl> References: <20040820090006.GX30151@darkness.comp.waw.pl>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20040820090006.GX30151@darkness.comp.waw.pl> Pawel Jakub Dawidek <pjd@freebsd.org> writes: : There are many calls to tsleep(9) with no timeout in our USB code. : As you all know, it is not permitted and we have KASSERT() for this: : : KASSERT(timo != 0 || mtx_owned(&Giant) || mtx != NULL, : ("sleeping without a mutex")); : : ehci.c:2441: tsleep(&sc->sc_softwake, PZERO, "ehciab", 0); : ohci.c:2288: tsleep(&sc->sc_softwake, PZERO, "ohciab", 0); : ubser.c:882: tsleep(&sc->sc_opening, PRIBIO, "ubser_op", 0); : ucom.c:275: tsleep(&sc->sc_opening, PRIBIO, "ucomop", 0); : ugen.c:633: error = tsleep(sce, PZERO | PCATCH, "ugenri", 0); : ugen.c:697: error = tsleep(sce, PZERO | PCATCH, "ugenri", 0); : uhci.c:1982: tsleep(&sc->sc_softwake, PZERO, "uhciab", 0); : uhid.c:496: error = tsleep(&sc->sc_q, PZERO | PCATCH, "uhidrea", 0); : ums.c:639: error = tsleep(sc, PZERO | PCATCH, "umsrea", 0); : usb.c:456: tsleep(&usb_all_tasks, PWAIT, "usbtsk", 0); : usb.c:534: error = tsleep(&usb_events, PZERO | PCATCH, "usbrea", 0); : usbdi.c:342: tsleep(xfer, PRIBIO, "usbsyn", 0); : usbdi_util.c:435: error = tsleep(xfer, PZERO | PCATCH, lbl, 0); : usbdi_util.c:477: error = tsleep(xfer, PZERO | PCATCH, lbl, 0); : : I saw only panic on tsleep(9) from usbdi.c, so I know for sure we don't : hold Giant there. Most of the usb stack will be called with GIANT held, which is likely why you haven't seen more panics. I'd suspect that the panic you are seeing from usbdi() due to other bogosity. Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040827.190711.77422828.imp>