summary refs log tree commit diff
path: root/drivers/pci/pcie
diff options
context:
space:
mode:
authorRandy Dunlap <rdunlap@xenotime.net>2006-07-06 21:36:01 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-08-03 13:20:06 -0700
commite4fd1f4a6e05335d464fe003c164fea850a3b3f3 (patch)
treefa1ed3dd97707d1a942f79ff8c8acfd32e2c2273 /drivers/pci/pcie
parent60854838596906ebae7f32e4de921e150e669b60 (diff)
downloadlinux-e4fd1f4a6e05335d464fe003c164fea850a3b3f3.tar.gz
PCIE: cleanup on probe error
If pcie_portdrv_probe() fails but it had already called
pci_enable_device(), then call pci_disable_device() when
returning error.

Is there some reason that this isn't being done?
or was it just missed?

Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Diffstat (limited to 'drivers/pci/pcie')
-rw-r--r--drivers/pci/pcie/portdrv_pci.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
index d0a37976faa6..478d0d28f7ad 100644
--- a/drivers/pci/pcie/portdrv_pci.c
+++ b/drivers/pci/pcie/portdrv_pci.c
@@ -56,8 +56,10 @@ static int __devinit pcie_portdrv_probe (struct pci_dev *dev,
 		"%s->Dev[%04x:%04x] has invalid IRQ. Check vendor BIOS\n", 
 		__FUNCTION__, dev->device, dev->vendor);
 	}
-	if (pcie_port_device_register(dev)) 
+	if (pcie_port_device_register(dev)) {
+		pci_disable_device(dev);
 		return -ENOMEM;
+	}
 
 	return 0;
 }