From: Randy Dunlap 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 Cc: Greg KH Signed-off-by: Andrew Morton --- drivers/pci/pcie/portdrv_pci.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN drivers/pci/pcie/portdrv_pci.c~pcie-cleanup-on-probe-error drivers/pci/pcie/portdrv_pci.c --- a/drivers/pci/pcie/portdrv_pci.c~pcie-cleanup-on-probe-error +++ a/drivers/pci/pcie/portdrv_pci.c @@ -73,8 +73,10 @@ static int __devinit pcie_portdrv_probe "%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; } _