diff options
author | 2021-06-17 18:03:53 +0300 | |
---|---|---|
committer | 2021-06-17 17:34:29 +0200 | |
commit | 271a21d8b280b186f8cc9ca6f7151902efde9512 (patch) | |
tree | 808b6e933eb400f603814f69c97e818c6b6118e1 /drivers/usb/host/xhci.c | |
parent | xhci: Add adaptive interrupt rate for isoch TRBs with XHCI_AVOID_BEI quirk (diff) | |
download | linux-dev-271a21d8b280b186f8cc9ca6f7151902efde9512.tar.xz linux-dev-271a21d8b280b186f8cc9ca6f7151902efde9512.zip |
xhci: handle failed buffer copy to URB sg list and fix a W=1 copiler warning
Set the urb->actual_length to bytes successfully copied in case all bytes
weren't copied from a temporary buffer to the URB sg list.
Also print a debug message
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210617150354.1512157-4-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/xhci.c')
-rw-r--r-- | drivers/usb/host/xhci.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 27283654ca08..9248ce8d09a4 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1361,12 +1361,17 @@ static void xhci_unmap_temp_buf(struct usb_hcd *hcd, struct urb *urb) urb->transfer_buffer_length, dir); - if (usb_urb_dir_in(urb)) + if (usb_urb_dir_in(urb)) { len = sg_pcopy_from_buffer(urb->sg, urb->num_sgs, urb->transfer_buffer, buf_len, 0); - + if (len != buf_len) { + xhci_dbg(hcd_to_xhci(hcd), + "Copy from tmp buf to urb sg list failed\n"); + urb->actual_length = len; + } + } urb->transfer_flags &= ~URB_DMA_MAP_SINGLE; kfree(urb->transfer_buffer); urb->transfer_buffer = NULL; |