projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
90d551a
)
xhci: handle failed buffer copy to URB sg list and fix a W=1 copiler warning
author
Mathias Nyman
<mathias.nyman@linux.intel.com>
Thu, 17 Jun 2021 15:03:53 +0000
(18:03 +0300)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Thu, 17 Jun 2021 15:34:29 +0000
(17:34 +0200)
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>
drivers/usb/host/xhci.c
patch
|
blob
|
history
diff --git
a/drivers/usb/host/xhci.c
b/drivers/usb/host/xhci.c
index 27283654ca08047a9fb0f50441101a4467485218..9248ce8d09a4a3489a61f4b4f2f87b8722bc8549 100644
(file)
--- 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;