cvs commit: src/sys/bus/usb ohci.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Jul 18 12:21:14 PDT 2005
dillon 2005/07/18 12:20:46 PDT
DragonFly src repository
Modified files:
sys/bus/usb ohci.c
Log:
Fix numerous extremely serious bugs in OHCI's iso-synchronous code. I'm
not even sure if the fixes are entirely correct because the code is badly
written and totally undocumented. But they seem to help.
* Fix up list linkages prior to calling ohci_free_sitd(), since
ohci_free_sitd() destroys the nextitd field. This was causing a huge
amount of corruption of the SITD free list *AND* the xfer SITD list,
particularly prevaliant when multi-record transfers are executed
(e.g. uaudio).
* Properly (I hope) adjust the pipe tail pointer in numerous situations.
There are a number of unconditional references and assumptions as to the
validity of pipe->tail.itd and it must be maintained at all times.
In particular, an aborted or timed-out transfer would corrupt it.
Reported-by: Michal Belczyk <belczyk at xxxxxxxxxxxxx>
Revision Changes Path
1.12 +59 -12 src/sys/bus/usb/ohci.c
http://www.dragonflybsd.org/cvsweb/src/sys/bus/usb/ohci.c.diff?r1=1.11&r2=1.12&f=u
More information about the Commits
mailing list