Message ID | 20220506094039.3629649-1-yangyingliang@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: stmmac: fix missing pci_disable_device() on error in stmmac_pci_probe() | expand |
On Fri, 6 May 2022 17:40:39 +0800 Yang Yingliang wrote: > Fix the missing pci_disable_device() before return > from stmmac_pci_probe() in the error handling case. > > Reported-by: Hulk Robot <hulkci@huawei.com> > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Here indeed pcim_enable_device() seems like a better fit.
Hi, On 2022/5/10 6:55, Jakub Kicinski wrote: > On Fri, 6 May 2022 17:40:39 +0800 Yang Yingliang wrote: >> Fix the missing pci_disable_device() before return >> from stmmac_pci_probe() in the error handling case. >> >> Reported-by: Hulk Robot <hulkci@huawei.com> >> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> > Here indeed pcim_enable_device() seems like a better fit. OK, I will send a v2 later. Thanks, Yang > .
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c index fcf17d8a0494..02bddc05a34f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c @@ -194,7 +194,7 @@ static int stmmac_pci_probe(struct pci_dev *pdev, continue; ret = pcim_iomap_regions(pdev, BIT(i), pci_name(pdev)); if (ret) - return ret; + goto err_out_disable_device; break; } @@ -202,7 +202,7 @@ static int stmmac_pci_probe(struct pci_dev *pdev, ret = info->setup(pdev, plat); if (ret) - return ret; + goto err_out_disable_device; memset(&res, 0, sizeof(res)); res.addr = pcim_iomap_table(pdev)[i]; @@ -219,7 +219,16 @@ static int stmmac_pci_probe(struct pci_dev *pdev, plat->safety_feat_cfg->prtyen = 1; plat->safety_feat_cfg->tmouten = 1; - return stmmac_dvr_probe(&pdev->dev, plat, &res); + ret = stmmac_dvr_probe(&pdev->dev, plat, &res); + if (ret) + goto err_out_disable_device; + + return 0; + +err_out_disable_device: + pci_disable_device(pdev); + + return ret; } /**
Fix the missing pci_disable_device() before return from stmmac_pci_probe() in the error handling case. Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> --- drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)