]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "usb: xhci: prevent potential failure in handle_tx_event() for Transfer events...
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Jul 2024 06:49:12 +0000 (08:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Jul 2024 07:24:52 +0000 (09:24 +0200)
This reverts commit 9a24eb8010c2dc6a2eba56e3eb9fc07d14ffe00a which is
commit 66cb618bf0bb82859875b00eeffaf223557cb416 upstream.

In backporting it to stable kernels, it causes a severe regression on
many systems, so revert it for now.

Reported-by: Tim Lewis <elatllat@gmail.com>
Link: https://lore.kernel.org/r/CA+3zgmvct7BWib9A7O1ykUf=0nZpdbdpXBdPWOCqfPuyCT3fug@mail.gmail.com
Reported-by: <matthias@bodenbinder.de>
Link: https://lore.kernel.org/r/bug-219039-208809@https.bugzilla.kernel.org/
Cc: Niklas Neronin <niklas.neronin@linux.intel.com>
Cc: Mathias Nyman <mathias.nyman@linux.intel.com>
Cc: MichaƂ Pecio <michal.pecio@gmail.com>
Cc: <ZeroBeat@gmx.de>
Cc: Salvatore Bonaccorso <carnil@debian.org>
Cc: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-ring.c

index 592dabc785152de0c95e856634d548cd9fe02013..8dd85221cd9275cf16ae5b8d652f2bab582c785b 100644 (file)
@@ -2649,17 +2649,16 @@ static int handle_tx_event(struct xhci_hcd *xhci,
                        else
                                xhci_handle_halted_endpoint(xhci, ep, NULL,
                                                            EP_SOFT_RESET);
-                       break;
+                       goto cleanup;
                case COMP_RING_UNDERRUN:
                case COMP_RING_OVERRUN:
                case COMP_STOPPED_LENGTH_INVALID:
-                       break;
+                       goto cleanup;
                default:
                        xhci_err(xhci, "ERROR Transfer event for unknown stream ring slot %u ep %u\n",
                                 slot_id, ep_index);
                        goto err_out;
                }
-               return 0;
        }
 
        /* Count current td numbers if ep->skip is set */