mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 05:44:31 +08:00
fec: Fix fec_enet_alloc_buffers() error path
When fec_enet_alloc_buffers() fails we should better undo the previous actions, which consists of: disabling the FEC clocks and putting the FEC pins into inactive state. The error path for fec_enet_mii_probe() is kept unchanged. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b3a00c912c
commit
681d2421e1
@ -2747,16 +2747,12 @@ fec_enet_open(struct net_device *ndev)
|
||||
|
||||
ret = fec_enet_alloc_buffers(ndev);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto err_enet_alloc;
|
||||
|
||||
/* Probe and connect to PHY when open the interface */
|
||||
ret = fec_enet_mii_probe(ndev);
|
||||
if (ret) {
|
||||
fec_enet_free_buffers(ndev);
|
||||
fec_enet_clk_enable(ndev, false);
|
||||
pinctrl_pm_select_sleep_state(&fep->pdev->dev);
|
||||
return ret;
|
||||
}
|
||||
if (ret)
|
||||
goto err_enet_mii_probe;
|
||||
|
||||
fec_restart(ndev);
|
||||
napi_enable(&fep->napi);
|
||||
@ -2764,6 +2760,13 @@ fec_enet_open(struct net_device *ndev)
|
||||
netif_tx_start_all_queues(ndev);
|
||||
|
||||
return 0;
|
||||
|
||||
err_enet_mii_probe:
|
||||
fec_enet_free_buffers(ndev);
|
||||
err_enet_alloc:
|
||||
fec_enet_clk_enable(ndev, false);
|
||||
pinctrl_pm_select_sleep_state(&fep->pdev->dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
|
Loading…
Reference in New Issue
Block a user