Skip to contentSkip to conversation

patch "xhci: Set URB actual length for stopped control transfers" added to usb-linus

PATCH [email protected] 1 participant 1 message Mar 29, 2017

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

xhci: Set URB actual length for stopped control transfers

to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.

The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)

The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.

If you have any questions about this process, please let me know.

Quoted 1 line

From 0ab2881a406b9fd46224a3e8253bbc0141b4f844 Mon Sep 17 00:00:00 2001

From: Mathias Nyman <[email protected]>
Date: Tue, 28 Mar 2017 15:55:29 +0300
Subject: 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 +++
 1 file changed, 3 insertions(+)
drivers/usb/host/xhci-ring.c +3 -0
index d9936c771fa0..a3309aa02993 100644
@@ -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);
Signature · 1 line
2.12.1