stmmac: dwmac-loongson: fix missing pci_disable_msi() while module exiting
[ Upstream commit f2d45fdf9a0ed2c94c01c422a0d0add8ffd42099 ] 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: 30bba69d7db4 ("stmmac: pci: Add dwmac support for Loongson") Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
83196d8dc5
commit
4a8770eebc
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user