[PATCH] powerpc/pseries: bugfix: balance calls to pci_device_put
authorLinas Vepstas <linas@austin.ibm.com>
Thu, 6 Apr 2006 20:41:41 +0000 (15:41 -0500)
committerPaul Mackerras <paulus@samba.org>
Thu, 13 Apr 2006 16:34:15 +0000 (09:34 -0700)
Repeated calls to eeh_remove_device() can result in multiple
(and thus unbalanced) calls to pci_dev_put(). Make sure the
pci_device_put() is called only once (since there was only
one call to the matching pci_device_get()).

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/pseries/eeh.c

index 780fb27a0099e24ca66b3fee2fbb9a5f7a258f1b..32eaddfa5470a635741228ada3365e4b9f20b5de 100644 (file)
@@ -957,8 +957,10 @@ static void eeh_remove_device(struct pci_dev *dev)
        pci_addr_cache_remove_device(dev);
 
        dn = pci_device_to_OF_node(dev);
-       PCI_DN(dn)->pcidev = NULL;
-       pci_dev_put (dev);
+       if (PCI_DN(dn)->pcidev) {
+               PCI_DN(dn)->pcidev = NULL;
+               pci_dev_put (dev);
+       }
 }
 
 void eeh_remove_bus_device(struct pci_dev *dev)