aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAndiry Xu <andiry.xu@amd.com>2010-10-27 04:44:52 -0400
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2010-11-11 13:36:51 -0500
commit74bb844af8ec6a4c360b1fc7feb139801c0cacfd (patch)
tree5037750c8c640cc8222cf49051460e980f4c22bc /drivers
parent241b652f1995de138106afd2f2e4eda9f8a3c240 (diff)
xHCI: release spinlock when setup interrupt
Jiri Slaby reports spinlock is held while calling kmalloc(GFP_KERNEL) and request_irq() in xhci_resume(). Release the spinlock when setup interrupt. Reported-by: Jiri Slaby <jirislaby@gmail.com> Signed-off-by: Andiry Xu <andiry.xu@amd.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/host/xhci.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 5d7d4e951ea4..7c8d70fbe113 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -714,6 +714,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
714 return retval; 714 return retval;
715 } 715 }
716 716
717 spin_unlock_irq(&xhci->lock);
717 /* Re-setup MSI-X */ 718 /* Re-setup MSI-X */
718 if (hcd->irq) 719 if (hcd->irq)
719 free_irq(hcd->irq, hcd); 720 free_irq(hcd->irq, hcd);
@@ -736,6 +737,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
736 hcd->irq = pdev->irq; 737 hcd->irq = pdev->irq;
737 } 738 }
738 739
740 spin_lock_irq(&xhci->lock);
739 /* step 4: set Run/Stop bit */ 741 /* step 4: set Run/Stop bit */
740 command = xhci_readl(xhci, &xhci->op_regs->command); 742 command = xhci_readl(xhci, &xhci->op_regs->command);
741 command |= CMD_RUN; 743 command |= CMD_RUN;