PCI: hotplug/cpcihp, fix pci device refcounting
authorJiri Slaby <jslaby@suse.cz>
Wed, 20 Jan 2010 13:15:54 +0000 (14:15 +0100)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Tue, 23 Feb 2010 00:17:02 +0000 (16:17 -0800)
Stanse found an ommitted pci_dev_put on one error path in
cpcihp_generic_init. The path is taken on !dev, but also when
dev->hdr_type != PCI_HEADER_TYPE_BRIDGE. However it omits to
pci_dev_put on the latter.

As it is fine to pass NULL to pci_dev_put, put it in there
uncoditionally.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Scott Murray <scott@spiteful.org>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/hotplug/cpcihp_generic.c

index 148fb46..fb3f846 100644 (file)
@@ -162,6 +162,7 @@ static int __init cpcihp_generic_init(void)
        dev = pci_get_slot(bus, PCI_DEVFN(bridge_slot, 0));
        if(!dev || dev->hdr_type != PCI_HEADER_TYPE_BRIDGE) {
                err("Invalid bridge device %s", bridge);
+               pci_dev_put(dev);
                return -EINVAL;
        }
        bus = dev->subordinate;