public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] net: macb: fix unregister_netdev call order in macb_remove()
@ 2025-08-17  0:29 luoguangfei
  0 siblings, 0 replies; 3+ messages in thread
From: luoguangfei @ 2025-08-17  0:29 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().

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] 3+ messages in thread

* [PATCH] net: macb: fix unregister_netdev call order in macb_remove()
@ 2025-08-17  0:39 luoguangfei
  2025-08-18 16:58 ` Jakub Kicinski
  0 siblings, 1 reply; 3+ messages in thread
From: luoguangfei @ 2025-08-17  0:39 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().

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] 3+ messages in thread

* Re: [PATCH] net: macb: fix unregister_netdev call order in macb_remove()
  2025-08-17  0:39 [PATCH] net: macb: fix unregister_netdev call order in macb_remove() luoguangfei
@ 2025-08-18 16:58 ` Jakub Kicinski
  0 siblings, 0 replies; 3+ messages in thread
From: Jakub Kicinski @ 2025-08-18 16:58 UTC (permalink / raw)
  To: luoguangfei
  Cc: nicolas.ferre, claudiu.beznea, andrew+netdev, davem, edumazet,
	pabeni, linux, netdev, linux-kernel

On Sun, 17 Aug 2025 08:39:25 +0800 luoguangfei wrote:
> 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().
> 
> Signed-off-by: luoguangfei <15388634752@163.com>

Please add an appropriate Fixes tag, pointing to the oldest commit
where issues could be reproduced.
-- 
pw-bot: cr

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-08-18 16:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-17  0:39 [PATCH] net: macb: fix unregister_netdev call order in macb_remove() luoguangfei
2025-08-18 16:58 ` Jakub Kicinski
  -- strict thread matches above, loose matches on Subject: below --
2025-08-17  0:29 luoguangfei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox