efficeon-agp leaks 'struct agp_bridge_data' in error paths of agp_efficeon_probe()
authorJesper Juhl <jesper.juhl@gmail.com>
Sat, 4 Aug 2007 18:30:58 +0000 (20:30 +0200)
committerDave Airlie <airlied@linux.ie>
Sun, 5 Aug 2007 21:30:20 +0000 (07:30 +1000)
(This is a resend of a patch originally submitted on 24-Jul-2007 00:14)

Ok, this is something the coverity checker found (CID: 1813).
I'm not at all intimate with this code, so I'm not sure if this
attempt at a fix is correct (but at least it compiles).

Please look it over and NACK if bad or merge if good ;-)

Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
drivers/char/agp/efficeon-agp.c

index df8da7262853d8d3320f8561ee8a378930e99b37..d78cd09186aa6cc1aa20155509ca7fe9a34b317a 100644 (file)
@@ -375,6 +375,7 @@ static int __devinit agp_efficeon_probe(struct pci_dev *pdev,
        if (!r->start && r->end) {
                if (pci_assign_resource(pdev, 0)) {
                        printk(KERN_ERR PFX "could not assign resource 0\n");
+                       agp_put_bridge(bridge);
                        return -ENODEV;
                }
        }
@@ -386,6 +387,7 @@ static int __devinit agp_efficeon_probe(struct pci_dev *pdev,
        */
        if (pci_enable_device(pdev)) {
                printk(KERN_ERR PFX "Unable to Enable PCI device\n");
+               agp_put_bridge(bridge);
                return -ENODEV;
        }