USB: xhci: Use GFP_ATOMIC under spin_lock
authorDavid Sterba <dsterba@suse.cz>
Tue, 2 Nov 2010 22:47:18 +0000 (23:47 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 11 Nov 2010 14:59:14 +0000 (06:59 -0800)
coccinelle check scripts/coccinelle/locks/call_kern.cocci found that
in drivers/usb/host/xhci.c an allocation with GFP_KERNEL is done
with locks held:

xhci_resume
  spin_lock_irq(xhci->lock)
    xhci_setup_msix
      kmalloc(GFP_KERNEL)

Change it to GFP_ATOMIC.

Signed-off-by: David Sterba <dsterba@suse.cz>
CC: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/xhci.c

index 5d7d4e9..8ddc965 100644 (file)
@@ -240,7 +240,7 @@ static int xhci_setup_msix(struct xhci_hcd *xhci)
 
        xhci->msix_entries =
                kmalloc((sizeof(struct msix_entry))*xhci->msix_count,
-                               GFP_KERNEL);
+                               GFP_ATOMIC);
        if (!xhci->msix_entries) {
                xhci_err(xhci, "Failed to allocate MSI-X entries\n");
                return -ENOMEM;