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>
This commit is contained in:
parent
90d551a5bc
commit
271a21d8b2
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user