Bogus usage of tsleep(9) in USB.

From: Pawel Jakub Dawidek <pjd_at_FreeBSD.org>
Date: Fri, 20 Aug 2004 11:00:06 +0200
Hi.

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.

-- 
Pawel Jakub Dawidek                       http://www.FreeBSD.org
pjd_at_FreeBSD.org                           http://garage.freebsd.pl
FreeBSD committer                         Am I Evil? Yes, I Am!

Received on Fri Aug 20 2004 - 07:00:12 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:07 UTC