Commit f2d45fdf authored by Yang Yingliang's avatar Yang Yingliang Committed by Paolo Abeni

stmmac: dwmac-loongson: fix missing pci_disable_msi() while module exiting

pci_enable_msi() has been called in loongson_dwmac_probe(),
so pci_disable_msi() needs be called in remove path and error
path of probe().

Fixes: 30bba69d ("stmmac: pci: Add dwmac support for Loongson")
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent c6092ea1
......@@ -125,6 +125,7 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id
if (res.irq < 0) {
dev_err(&pdev->dev, "IRQ macirq not found\n");
ret = -ENODEV;
goto err_disable_msi;
}
res.wol_irq = of_irq_get_byname(np, "eth_wake_irq");
......@@ -137,9 +138,18 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id
if (res.lpi_irq < 0) {
dev_err(&pdev->dev, "IRQ eth_lpi not found\n");
ret = -ENODEV;
goto err_disable_msi;
}
return stmmac_dvr_probe(&pdev->dev, plat, &res);
ret = stmmac_dvr_probe(&pdev->dev, plat, &res);
if (ret)
goto err_disable_msi;
return ret;
err_disable_msi:
pci_disable_msi(pdev);
return ret;
}
static void loongson_dwmac_remove(struct pci_dev *pdev)
......@@ -155,6 +165,7 @@ static void loongson_dwmac_remove(struct pci_dev *pdev)
break;
}
pci_disable_msi(pdev);
pci_disable_device(pdev);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment