* [PATCH] net: macb: fix unregister_netdev call order in macb_remove() [v2]
@ 2025-08-18 23:25 luoguangfei
2025-08-22 1:20 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: luoguangfei @ 2025-08-18 23:25 UTC (permalink / raw)
To: nicolas.ferre, claudiu.beznea
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, linux, netdev,
linux-kernel, 15388634752
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: 8b73fa3ae02b ("net: macb: Added ZynqMP-specific initialization")
Signed-off-by: luoguangfei <15388634752@163.com>
---
drivers/net/ethernet/cadence/macb_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index ce55a1f59..7bbb674d5 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -5407,11 +5407,11 @@ static void macb_remove(struct platform_device *pdev)
if (dev) {
bp = netdev_priv(dev);
+ unregister_netdev(dev);
phy_exit(bp->sgmii_phy);
mdiobus_unregister(bp->mii_bus);
mdiobus_free(bp->mii_bus);
- unregister_netdev(dev);
cancel_work_sync(&bp->hresp_err_bh_work);
pm_runtime_disable(&pdev->dev);
pm_runtime_dont_use_autosuspend(&pdev->dev);
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] net: macb: fix unregister_netdev call order in macb_remove() [v2]
2025-08-18 23:25 [PATCH] net: macb: fix unregister_netdev call order in macb_remove() [v2] luoguangfei
@ 2025-08-22 1:20 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-08-22 1:20 UTC (permalink / raw)
To: luoguangfei
Cc: nicolas.ferre, claudiu.beznea, andrew+netdev, davem, edumazet,
kuba, pabeni, linux, netdev, linux-kernel
Hello:
This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Tue, 19 Aug 2025 07:25:27 +0800 you wrote:
> 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
> ...
>
> [...]
Here is the summary with links:
- net: macb: fix unregister_netdev call order in macb_remove() [v2]
https://git.kernel.org/netdev/net/c/2df84b42f155
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-08-22 1:20 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-18 23:25 [PATCH] net: macb: fix unregister_netdev call order in macb_remove() [v2] luoguangfei
2025-08-22 1:20 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).