Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Aug 2004 11:09:31 +0200
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        freebsd-current@freebsd.org
Subject:   Re: Bogus usage of tsleep(9) in USB.
Message-ID:  <20040820090931.GY30151@darkness.comp.waw.pl>
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

--Re7H+V5lQR2Zv/pu
Content-Type: text/plain; charset=iso-8859-2
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Aug 20, 2004 at 11:00:06AM +0200, Pawel Jakub Dawidek wrote:
+> 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:
+>=20
+>         KASSERT(timo !=3D 0 || mtx_owned(&Giant) || mtx !=3D NULL,
+>             ("sleeping without a mutex"));
+>=20
+> 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 =3D tsleep(sce, PZERO | PCATCH, "u=
genri", 0);
+> ugen.c:697:                     error =3D tsleep(sce, PZERO | PCATCH, "u=
genri", 0);
+> uhci.c:1982:    tsleep(&sc->sc_softwake, PZERO, "uhciab", 0);
+> uhid.c:496:             error =3D tsleep(&sc->sc_q, PZERO | PCATCH, "uhi=
drea", 0);
+> ums.c:639:              error =3D tsleep(sc, PZERO | PCATCH, "umsrea", 0=
);
+> usb.c:456:                      tsleep(&usb_all_tasks, PWAIT, "usbtsk", =
0);
+> usb.c:534:              error =3D tsleep(&usb_events, PZERO | PCATCH, "u=
sbrea", 0);
+> usbdi.c:342:            tsleep(xfer, PRIBIO, "usbsyn", 0);
+> usbdi_util.c:435:       error =3D tsleep(xfer, PZERO | PCATCH, lbl, 0);
+> usbdi_util.c:477:       error =3D tsleep(xfer, PZERO | PCATCH, lbl, 0);
+>=20
+> I saw only panic on tsleep(9) from usbdi.c, so I know for sure we don't
+> hold Giant there.

BTW. It looks there are more interesting places:

	anger:root:~# egrep -r 'tsleep.*[^0-9]0\)' /sys/ | wc -l
	     123

I don't know where we hold Giant, but I'm quite sure not everywhere.

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

--Re7H+V5lQR2Zv/pu
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)

iD8DBQFBJb/LForvXbEpPzQRAqR5AKDCAw0BNqesifGKWgRnBcZ9VTZX8QCdFZWw
an9d87xljp/2efqHg91DXsk=
=e7vn
-----END PGP SIGNATURE-----

--Re7H+V5lQR2Zv/pu--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040820090931.GY30151>