Module Name: src Committed By: riastradh Date: Sun Mar 13 11:28:42 UTC 2022
Modified Files: src/sys/dev/usb: usb_subr.c usbdi.c usbdivar.h Log Message: usbdi(9): Assert no concurrent aborts on a single pipe. It is a driver bug to try to abort a pipe at the same time in two different threads. HCI drivers may release the bus lock to sleep in upm_abort while waiting for the hardware to acknowledge an abort, so it won't try to, e.g., scribble over a DMA buffer in the xfer that we've recycled after usbd_abort_pipe returns. If this happens, a concurrent usbd_abort_pipe might try to apply upm_abort to the same xfer, which HCI drivers are not prepared for and may wreak havoc. To avoid this, allow only one usbd_abort_pipe in flight at any given time. To generate a diff of this commit: cvs rdiff -u -r1.270 -r1.271 src/sys/dev/usb/usb_subr.c cvs rdiff -u -r1.234 -r1.235 src/sys/dev/usb/usbdi.c cvs rdiff -u -r1.135 -r1.136 src/sys/dev/usb/usbdivar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.