[PATCH] PCI: Move pci_dev_put outside a spinlock
authorAlan Stern <stern@rowland.harvard.edu>
Thu, 23 Feb 2006 22:12:51 +0000 (17:12 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 23 Mar 2006 22:35:14 +0000 (14:35 -0800)
This patch (as659) fixes a might_sleep problem in the PCI core, by moving
a call to pci_dev_put() outside the scope of a spinlock.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/pci/search.c

index 05fa91a..ce7dd6e 100644 (file)
@@ -246,9 +246,9 @@ pci_get_subsys(unsigned int vendor, unsigned int device,
        }
        dev = NULL;
 exit:
-       pci_dev_put(from);
        dev = pci_dev_get(dev);
        spin_unlock(&pci_bus_lock);
+       pci_dev_put(from);
        return dev;
 }
 
@@ -339,9 +339,9 @@ struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from)
        }
        dev = NULL;
 exit:
-       pci_dev_put(from);
        dev = pci_dev_get(dev);
        spin_unlock(&pci_bus_lock);
+       pci_dev_put(from);
        return dev;
 }