cvs commit: src/sys/dev/usb ehci.c ehcivar.h ohci.c ohcivar.h
uhci.c uhcivar.h
Ian Dowse
iedowse at FreeBSD.org
Sat Mar 19 11:08:46 PST 2005
iedowse 2005-03-19 19:08:46 UTC
FreeBSD src repository
Modified files:
sys/dev/usb ehci.c ehcivar.h ohci.c ohcivar.h uhci.c
uhcivar.h
Log:
It was possible to have two threads concurrently aborting the same
transfer, which lead to panics or page faults. For example if a
transfer timed out, another thread could come along and attempt to
abort the same transfer while the timeout task was sleeping in
the *_abort_xfer() function.
Add an "aborting" flag to the private transfer state in each host
controller driver and use this to ensure that the abort is only
executed once. Also prioritise normal abort requests over timeouts
so that the callback is always given a status of USB_CANCELLED even
if the timeout-initiated abort began first.
The crashes caused by this bug were mainly reported in connection
with lpd printing to a USB printer.
PR: usb/78208, usb/78986
Revision Changes Path
1.34 +26 -0 src/sys/dev/usb/ehci.c
1.9 +4 -0 src/sys/dev/usb/ehcivar.h
1.153 +28 -0 src/sys/dev/usb/ohci.c
1.40 +2 -0 src/sys/dev/usb/ohcivar.h
1.161 +28 -1 src/sys/dev/usb/uhci.c
1.40 +4 -0 src/sys/dev/usb/uhcivar.h
More information about the cvs-src
mailing list