FAILED: patch "[PATCH] xhci: Set URB actual length for stopped control transfers" failed to apply to 4.4-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
0ab2881a406b9fd46224a3e8253bbc0141b4f844Mon Sep 17 00:00:00 2001
From: Mathias Nyman <[email protected]>
Date: Tue, 28 Mar 2017 15:55:29 +0300
Subject: [PATCH] xhci: Set URB actual length for stopped control transfers
A control transfer that stopped at the status stage incorrectly warned about a "unexpected TRB Type 4", and did not set the transferred actual_length for the URB.
The URB actual_length for control transfers should contain the bytes transferred in the data stage.
Bytes of a partially sent setup stage and missing bytes from status stage should be left out.
drivers/usb/host/xhci-ring.c +3 -0
@@ -1989,6 +1989,9 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td,case TRB_NORMAL : td->urb->actual_length = requested - remaining; goto finish_td; +case TRB_STATUS : + td->urb->actual_length = requested; + goto finish_td;default :xhci_warn (xhci,"WARN: unexpected TRB Type %d\n" , trb_type);