xhci: fix giving back URB with incorrect status regression in 5.12
authorMathias Nyman <mathias.nyman@linux.intel.com>
Tue, 25 May 2021 07:40:59 +0000 (10:40 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 25 May 2021 08:21:47 +0000 (10:21 +0200)
commita80c203c3f1c06d2201c19ae071d0ae770a2b1ca
tree2177d7ccc10eed811dc673b6dc91058179db94f8
parente6809703e164e0e47d99a42084af06a60e386b13
xhci: fix giving back URB with incorrect status regression in 5.12

5.12 kernel changes how xhci handles cancelled URBs and halted
endpoints. Among these changes cancelled and stalled URBs are no longer
given back before they are cleared from xHC hardware cache.

These changes unfortunately cleared the -EPIPE status of a stalled
transfer in one case before giving bak the URB, causing a USB card reader
to fail from working.

Fixes: 674f8438c121 ("xhci: split handling halted endpoints into two steps")
Cc: <stable@vger.kernel.org> # 5.12
Reported-by: Peter Ganzhorn <peter.ganzhorn@googlemail.com>
Tested-by: Peter Ganzhorn <peter.ganzhorn@googlemail.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210525074100.1154090-2-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-ring.c