diff options
author | Arthur Jones <arthur.jones@qlogic.com> | 2007-03-15 17:45:04 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-04-18 23:20:58 -0400 |
commit | 7b196e2ff3953063b656212ff517f6115a1477b2 (patch) | |
tree | 8fbeaa7ba8e19d37deca05cae2ad8093cf898be4 | |
parent | 5a7d4eea9185c20275307fcd1077d6f9dfdab48a (diff) |
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, | |||
486 | 486 | ||
487 | ret = ipath_init_chip(dd, 0); /* do the chip-specific init */ | 487 | ret = ipath_init_chip(dd, 0); /* do the chip-specific init */ |
488 | if (ret) | 488 | if (ret) |
489 | goto bail_iounmap; | 489 | goto bail_irqsetup; |
490 | 490 | ||
491 | ret = ipath_enable_wc(dd); | 491 | ret = ipath_enable_wc(dd); |
492 | 492 | ||
@@ -505,6 +505,9 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, | |||
505 | 505 | ||
506 | goto bail; | 506 | goto bail; |
507 | 507 | ||
508 | bail_irqsetup: | ||
509 | if (pdev->irq) free_irq(pdev->irq, dd); | ||
510 | |||
508 | bail_iounmap: | 511 | bail_iounmap: |
509 | iounmap((volatile void __iomem *) dd->ipath_kregbase); | 512 | iounmap((volatile void __iomem *) dd->ipath_kregbase); |
510 | 513 | ||