DragonFly commits List (threaded) for 2005-07
cvs commit: src/sys/bus/usb ohci.c
dillon 2005/07/18 12:20:46 PDT
DragonFly src repository
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
* 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@xxxxxxxxxxxxx>
Revision Changes Path
1.12 +59 -12 src/sys/bus/usb/ohci.c