summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Nyman <mathias.nyman@linux.intel.com>2019-03-22 17:50:16 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-04-03 06:26:27 +0200
commit20a09a2e8703b9ea458fd6de3c5cf563501e571a (patch)
treeced06124585f4b6456565203ee0d618f0c75b45c
parentc81b872281a12a26a945f8acc31d84544e1a222a (diff)
downloadlinux-rpi3-20a09a2e8703b9ea458fd6de3c5cf563501e571a.tar.gz
linux-rpi3-20a09a2e8703b9ea458fd6de3c5cf563501e571a.tar.bz2
linux-rpi3-20a09a2e8703b9ea458fd6de3c5cf563501e571a.zip
usb: xhci: dbc: Don't free all memory with spinlock held
commit 8867ea262196a6945c24a0fb739575af646ec0e9 upstream. The xhci debug capability (DbC) feature did its memory cleanup with spinlock held. dma_free_coherent() warns if called with interrupts disabled move the memory cleanup outside the spinlock Cc: stable <stable@vger.kernel.org> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/host/xhci-dbgcap.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/usb/host/xhci-dbgcap.c b/drivers/usb/host/xhci-dbgcap.c
index 86cff5c28eff..ba841c569c48 100644
--- a/drivers/usb/host/xhci-dbgcap.c
+++ b/drivers/usb/host/xhci-dbgcap.c
@@ -516,7 +516,6 @@ static int xhci_do_dbc_stop(struct xhci_hcd *xhci)
return -1;
writel(0, &dbc->regs->control);
- xhci_dbc_mem_cleanup(xhci);
dbc->state = DS_DISABLED;
return 0;
@@ -562,8 +561,10 @@ static void xhci_dbc_stop(struct xhci_hcd *xhci)
ret = xhci_do_dbc_stop(xhci);
spin_unlock_irqrestore(&dbc->lock, flags);
- if (!ret)
+ if (!ret) {
+ xhci_dbc_mem_cleanup(xhci);
pm_runtime_put_sync(xhci_to_hcd(xhci)->self.controller);
+ }
}
static void