aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMathias Nyman <mathias.nyman@linux.intel.com>2024-10-16 16:59:58 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-10-17 08:45:36 +0200
commitfe49df60cdb7c2975aa743dc295f8786e4b7db10 (patch)
tree4f6f84c1d23668cbcd8633944125f259b31480f6
parentxhci: Fix incorrect stream context type macro (diff)
downloadwireguard-linux-fe49df60cdb7c2975aa743dc295f8786e4b7db10.tar.xz
wireguard-linux-fe49df60cdb7c2975aa743dc295f8786e4b7db10.zip
xhci: Mitigate failed set dequeue pointer commands
Avoid xHC host from processing a cancelled URB by always turning cancelled URB TDs into no-op TRBs before queuing a 'Set TR Deq' command. If the command fails then xHC will start processing the cancelled TD instead of skipping it once endpoint is restarted, causing issues like Babble error. This is not a complete solution as a failed 'Set TR Deq' command does not guarantee xHC TRB caches are cleared. Fixes: 4db356924a50 ("xhci: turn cancelled td cleanup to its own function") Cc: stable@vger.kernel.org Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Link: https://lore.kernel.org/r/20241016140000.783905-3-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to '')
-rw-r--r--drivers/usb/host/xhci-ring.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 4d664ba53fe9..7dedf31bbddd 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1023,7 +1023,7 @@ static int xhci_invalidate_cancelled_tds(struct xhci_virt_ep *ep)
td_to_noop(xhci, ring, cached_td, false);
cached_td->cancel_status = TD_CLEARED;
}
-
+ td_to_noop(xhci, ring, td, false);
td->cancel_status = TD_CLEARING_CACHE;
cached_td = td;
break;