IB/ipath: Fix probe failure path
The failure path in ipath_init_one() does not match the cleanup code in ipath_remove_one() and appears to leave interrupts enabled in some cases. Change it to match. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
589643be66
commit
dccb816de3
1 changed files with 10 additions and 3 deletions
|
@ -390,6 +390,8 @@ done:
|
|||
ipath_enable_armlaunch(dd);
|
||||
}
|
||||
|
||||
static void cleanup_device(struct ipath_devdata *dd);
|
||||
|
||||
static int __devinit ipath_init_one(struct pci_dev *pdev,
|
||||
const struct pci_device_id *ent)
|
||||
{
|
||||
|
@ -616,8 +618,13 @@ static int __devinit ipath_init_one(struct pci_dev *pdev,
|
|||
goto bail;
|
||||
|
||||
bail_irqsetup:
|
||||
if (pdev->irq)
|
||||
free_irq(pdev->irq, dd);
|
||||
cleanup_device(dd);
|
||||
|
||||
if (dd->ipath_irq)
|
||||
dd->ipath_f_free_irq(dd);
|
||||
|
||||
if (dd->ipath_f_cleanup)
|
||||
dd->ipath_f_cleanup(dd);
|
||||
|
||||
bail_iounmap:
|
||||
iounmap((volatile void __iomem *) dd->ipath_kregbase);
|
||||
|
@ -635,7 +642,7 @@ bail:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void __devexit cleanup_device(struct ipath_devdata *dd)
|
||||
static void cleanup_device(struct ipath_devdata *dd)
|
||||
{
|
||||
int port;
|
||||
struct ipath_portdata **tmp;
|
||||
|
|
Reference in a new issue