Revert "xhci: don't finish a TD if we get a short transfer event mid TD"

Closes: #808602, #808953, regression in 4.3-rc7
This commit is contained in:
Ben Hutchings 2016-01-02 03:08:04 +00:00
parent 50c5af2358
commit eafb4c30fd
3 changed files with 40 additions and 0 deletions

2
debian/changelog vendored
View File

@ -17,6 +17,8 @@ linux (4.3.3-3) UNRELEASED; urgency=medium
* [x86] drm/i915: Don't compare has_drrs strictly in pipe config
(Closes: #808720)
* [armhf] crypto: sun4i-ss - add missing statesize (Closes: #808625)
* Revert "xhci: don't finish a TD if we get a short transfer event mid TD"
(Closes: #808602, #808953, regression in 4.3-rc7)
[ Salvatore Bonaccorso ]
* ovl: fix permission checking for setattr (CVE-2015-8660)

View File

@ -0,0 +1,37 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Sat, 02 Jan 2016 03:03:27 +0000
Subject: Revert "xhci: don't finish a TD if we get a short transfer event mid TD"
Bug-Debian: https://bugs.debian.org/808602
Bug-Debian: https://bugs.debian.org/808953
This reverts commit dbd81f75b991c972970764ba75287cbbc8f066be, which
was commit e210c422b6fdd2dc123bedc588f399aefd8bf9de upstream. It
caused serious regressions as referenced above.
---
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2191,10 +2191,6 @@ static int process_bulk_intr_td(struct x
}
/* Fast path - was this the last TRB in the TD for this URB? */
} else if (event_trb == td->last_trb) {
- if (td->urb_length_set && trb_comp_code == COMP_SHORT_TX)
- return finish_td(xhci, td, event_trb, event, ep,
- status, false);
-
if (EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) {
td->urb->actual_length =
td->urb->transfer_buffer_length -
@@ -2246,12 +2242,6 @@ static int process_bulk_intr_td(struct x
td->urb->actual_length +=
TRB_LEN(le32_to_cpu(cur_trb->generic.field[2])) -
EVENT_TRB_LEN(le32_to_cpu(event->transfer_len));
-
- if (trb_comp_code == COMP_SHORT_TX) {
- xhci_dbg(xhci, "mid bulk/intr SP, wait for last TRB event\n");
- td->urb_length_set = true;
- return 0;
- }
}
return finish_td(xhci, td, event_trb, event, ep, status, false);

View File

@ -131,3 +131,4 @@ bugfix/x86/KVM-x86-Reload-pit-counters-for-all-channels-when-re.patch
bugfix/all/drm-nouveau-pmu-do-not-assume-a-pmu-is-present.patch
bugfix/x86/drm-i915-don-t-compare-has_drrs-strictly-in-pipe-con.patch
bugfix/arm/crypto-sun4i-ss-add-missing-statesize.patch
bugfix/all/revert-xhci-don-t-finish-a-td-if-we-get-a-short-transfer.patch