powerpc/pci/rpadlpar: Fix device reference leaks
[pandora-kernel.git] / drivers / pci / hotplug / cpcihp_zt5550.c
index 1ec165d..41f6a8d 100644 (file)
  * Send feedback to <scottm@somanetworks.com>
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/init.h>
 #include <linux/errno.h>
 #include <linux/pci.h>
-#include <linux/signal.h>      /* SA_SHIRQ */
+#include <linux/interrupt.h>
+#include <linux/signal.h>      /* IRQF_SHARED */
 #include "cpci_hotplug.h"
 #include "cpcihp_zt5550.h"
 
@@ -220,7 +220,7 @@ static int zt5550_hc_init_one (struct pci_dev *pdev, const struct pci_device_id
        zt5550_hpc.ops = &zt5550_hpc_ops;
        if(!poll) {
                zt5550_hpc.irq = hc_dev->irq;
-               zt5550_hpc.irq_flags = SA_SHIRQ;
+               zt5550_hpc.irq_flags = IRQF_SHARED;
                zt5550_hpc.dev_id = hc_dev;
 
                zt5550_hpc_ops.enable_irq = zt5550_hc_enable_irq;
@@ -296,13 +296,17 @@ static struct pci_driver zt5550_hc_driver = {
 static int __init zt5550_init(void)
 {
        struct resource* r;
+       int rc;
 
        info(DRIVER_DESC " version: " DRIVER_VERSION);
        r = request_region(ENUM_PORT, 1, "#ENUM hotswap signal register");
        if(!r)
                return -EBUSY;
 
-       return pci_register_driver(&zt5550_hc_driver);
+       rc = pci_register_driver(&zt5550_hc_driver);
+       if(rc < 0)
+               release_region(ENUM_PORT, 1);
+       return rc;
 }
 
 static void __exit