diff options
author | Andiry Xu <andiry.xu@amd.com> | 2010-10-27 04:44:52 -0400 |
---|---|---|
committer | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2010-11-11 13:36:51 -0500 |
commit | 74bb844af8ec6a4c360b1fc7feb139801c0cacfd (patch) | |
tree | 5037750c8c640cc8222cf49051460e980f4c22bc /drivers/usb | |
parent | 241b652f1995de138106afd2f2e4eda9f8a3c240 (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/usb')
-rw-r--r-- | drivers/usb/host/xhci.c | 2 |
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; |