Message ID | 20221105121840.3654266-2-yangyingliang@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | stmmac: dwmac-loongson: fixes three leaks | expand |
Hello, On Sat, 2022-11-05 at 20:18 +0800, Yang Yingliang wrote: > 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> > --- > drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c > index 79fa7870563b..dd292e71687b 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c > @@ -139,7 +139,15 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id > ret = -ENODEV; > } > > - 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; > } It looks like this patch is missing a couple of error paths, still after pci_enable_msi(), which need 'goto err_disable_msi', too: https://elixir.bootlin.com/linux/v6.1-rc4/source/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c#L127 https://elixir.bootlin.com/linux/v6.1-rc4/source/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c#L139 Cheers, Paolo
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c index 79fa7870563b..dd292e71687b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c @@ -139,7 +139,15 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id ret = -ENODEV; } - 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 +163,7 @@ static void loongson_dwmac_remove(struct pci_dev *pdev) break; } + pci_disable_msi(pdev); pci_disable_device(pdev); }
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> --- drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)