diff options
| author | ShengYi Hung <aokblast@FreeBSD.org> | 2026-05-28 08:42:11 +0000 |
|---|---|---|
| committer | ShengYi Hung <aokblast@FreeBSD.org> | 2026-05-28 14:36:10 +0000 |
| commit | df5e9e3da5b9b3fe63ed4aaaa19b824fd18ae0f2 (patch) | |
| tree | 71db2e4db3594dfa8e1c94f54689d9e5584cf894 | |
| parent | 9fb56421425fa35e56ce294284c08b09852052a5 (diff) | |
usb: Add missing mtx lock and unlock in pushing dma queue
Accessing usb_xfer_queue requires bus lock, we added this missing lock
in here to prevent racing issue.
Reviewed by: adrian
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D57293
| -rw-r--r-- | sys/dev/usb/usb_transfer.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/dev/usb/usb_transfer.c b/sys/dev/usb/usb_transfer.c index 67745cf49397..d41121ed3a06 100644 --- a/sys/dev/usb/usb_transfer.c +++ b/sys/dev/usb/usb_transfer.c @@ -1889,8 +1889,10 @@ usbd_transfer_submit(struct usb_xfer *xfer) */ #if USB_HAVE_BUSDMA if (xfer->flags_int.bdma_enable) { + USB_BUS_LOCK(bus); /* insert the USB transfer last in the BUS-DMA queue */ usb_command_wrapper(&xfer->xroot->dma_q, xfer); + USB_BUS_UNLOCK(bus); return; } #endif |
