]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
xhci: dbc: Flush queued requests before stopping dbc
authorMathias Nyman <mathias.nyman@linux.intel.com>
Fri, 27 Jun 2025 14:41:22 +0000 (17:41 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 28 Jun 2025 15:20:25 +0000 (17:20 +0200)
Flush dbc requests when dbc is stopped and transfer rings are freed.
Failure to flush them lead to leaking memory and dbc completing odd
requests after resuming from suspend, leading to error messages such as:

[   95.344392] xhci_hcd 0000:00:0d.0: no matched request

Cc: stable <stable@kernel.org>
Fixes: dfba2174dc42 ("usb: xhci: Add DbC support in xHCI driver")
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20250627144127.3889714-5-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-dbgcap.c

index 0d4ce5734165ed3fc9b04d5901395fb4e95e6838..06a2edb9e86ef754a7bfc76f33da0e5ad504d6ae 100644 (file)
@@ -652,6 +652,10 @@ static void xhci_dbc_stop(struct xhci_dbc *dbc)
        case DS_DISABLED:
                return;
        case DS_CONFIGURED:
+               spin_lock(&dbc->lock);
+               xhci_dbc_flush_requests(dbc);
+               spin_unlock(&dbc->lock);
+
                if (dbc->driver->disconnect)
                        dbc->driver->disconnect(dbc);
                break;