Skip to content

Commit 01b9128

Browse files
luoguangfeikuba-moo
authored andcommitted
net: macb: fix unregister_netdev call order in macb_remove()
When removing a macb device, the driver calls phy_exit() before unregister_netdev(). This leads to a WARN from kernfs: ------------[ cut here ]------------ kernfs: can not remove 'attached_dev', no directory WARNING: CPU: 1 PID: 27146 at fs/kernfs/dir.c:1683 Call trace: kernfs_remove_by_name_ns+0xd8/0xf0 sysfs_remove_link+0x24/0x58 phy_detach+0x5c/0x168 phy_disconnect+0x4c/0x70 phylink_disconnect_phy+0x6c/0xc0 [phylink] macb_close+0x6c/0x170 [macb] ... macb_remove+0x60/0x168 [macb] platform_remove+0x5c/0x80 ... The warning happens because the PHY is being exited while the netdev is still registered. The correct order is to unregister the netdev before shutting down the PHY and cleaning up the MDIO bus. Fix this by moving unregister_netdev() ahead of phy_exit() in macb_remove(). Fixes: 8b73fa3 ("net: macb: Added ZynqMP-specific initialization") Signed-off-by: luoguangfei <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent e959fe7 commit 01b9128

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/net/ethernet/cadence/macb_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5399,11 +5399,11 @@ static void macb_remove(struct platform_device *pdev)
53995399

54005400
if (dev) {
54015401
bp = netdev_priv(dev);
5402+
unregister_netdev(dev);
54025403
phy_exit(bp->sgmii_phy);
54035404
mdiobus_unregister(bp->mii_bus);
54045405
mdiobus_free(bp->mii_bus);
54055406

5406-
unregister_netdev(dev);
54075407
cancel_work_sync(&bp->hresp_err_bh_work);
54085408
pm_runtime_disable(&pdev->dev);
54095409
pm_runtime_dont_use_autosuspend(&pdev->dev);

0 commit comments

Comments
 (0)