Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 681d2421 authored by Fabio Estevam's avatar Fabio Estevam Committed by David S. Miller
Browse files

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: default avatarFabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b3a00c91
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -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