diff options
author | Arthur Jones <arthur.jones@qlogic.com> | 2007-03-15 14:45:04 -0700 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-04-18 20:20:58 -0700 |
commit | 7b196e2ff3953063b656212ff517f6115a1477b2 (patch) | |
tree | 8fbeaa7ba8e19d37deca05cae2ad8093cf898be4 | |
parent | 5a7d4eea9185c20275307fcd1077d6f9dfdab48a (diff) | |
download | linux-7b196e2ff3953063b656212ff517f6115a1477b2.tar.gz linux-7b196e2ff3953063b656212ff517f6115a1477b2.tar.bz2 linux-7b196e2ff3953063b656212ff517f6115a1477b2.zip |
IB/ipath: Call free_irq() on chip specific initialization failure
In initialization, if we bailed at chip specific initialization, we
forgot to clean up the irq we had requested.
Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_driver.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c index 291d4ea69a40..ab7458e904c3 100644 --- a/drivers/infiniband/hw/ipath/ipath_driver.c +++ b/drivers/infiniband/hw/ipath/ipath_driver.c @@ -486,7 +486,7 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, ret = ipath_init_chip(dd, 0); /* do the chip-specific init */ if (ret) - goto bail_iounmap; + goto bail_irqsetup; ret = ipath_enable_wc(dd); @@ -505,6 +505,9 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, goto bail; +bail_irqsetup: + if (pdev->irq) free_irq(pdev->irq, dd); + bail_iounmap: iounmap((volatile void __iomem *) dd->ipath_kregbase); |