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

Commit ce5eaf02 authored by Russell King's avatar Russell King Committed by David S. Miller
Browse files

NET: fec: only enable napi if we are successful



If napi is left enabled after a failed attempt to bring the interface
up, we BUG:

fec 2188000.ethernet eth0: no PHY, assuming direct connection to switch
libphy: PHY fixed-0:00 not found
fec 2188000.ethernet eth0: could not attach to PHY
------------[ cut here ]------------
kernel BUG at include/linux/netdevice.h:502!
Internal error: Oops - BUG: 0 [#1] SMP ARM
...
PC is at fec_enet_open+0x4d0/0x500
LR is at __dev_open+0xa4/0xfc

Only enable napi after we are past all the failure paths.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d7cf0c34
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1778,8 +1778,6 @@ fec_enet_open(struct net_device *ndev)
	struct fec_enet_private *fep = netdev_priv(ndev);
	int ret;

	napi_enable(&fep->napi);

	/* I should reset the ring buffers here, but I don't yet know
	 * a simple way to do that.
	 */
@@ -1794,6 +1792,8 @@ fec_enet_open(struct net_device *ndev)
		fec_enet_free_buffers(ndev);
		return ret;
	}

	napi_enable(&fep->napi);
	phy_start(fep->phy_dev);
	netif_start_queue(ndev);
	fep->opened = 1;