From: Niklas Cassel <cassel@kernel.org>
To: Heiner Kallweit <hkallweit1@gmail.com>,
nic_swsd@realtek.com, Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>,
Niklas Cassel <cassel@kernel.org>,
netdev@vger.kernel.org
Subject: [PATCH] r8169: do not call rtl8169_down() twice on shutdown
Date: Tue, 15 Apr 2025 11:53:36 +0200 [thread overview]
Message-ID: <20250415095335.506266-2-cassel@kernel.org> (raw)
For a PCI controller driver with a .shutdown() callback, we will see the
following warning:
[ 12.020111] called from state HALTED
[ 12.020459] WARNING: CPU: 7 PID: 229 at drivers/net/phy/phy.c:1630 phy_stop+0x134/0x1a0
This is because rtl8169_down() (which calls phy_stop()) is called twice
during shutdown.
First time:
[ 23.827764] Call trace:
[ 23.827765] show_stack+0x20/0x40 (C)
[ 23.827774] dump_stack_lvl+0x60/0x80
[ 23.827778] dump_stack+0x18/0x24
[ 23.827782] rtl8169_down+0x30/0x2a0
[ 23.827788] rtl_shutdown+0xb0/0xc0
[ 23.827792] pci_device_shutdown+0x3c/0x88
[ 23.827797] device_shutdown+0x150/0x278
[ 23.827802] kernel_restart+0x4c/0xb8
Second time:
[ 23.841468] Call trace:
[ 23.841470] show_stack+0x20/0x40 (C)
[ 23.841478] dump_stack_lvl+0x60/0x80
[ 23.841483] dump_stack+0x18/0x24
[ 23.841486] rtl8169_down+0x30/0x2a0
[ 23.841492] rtl8169_close+0x64/0x100
[ 23.841496] __dev_close_many+0xbc/0x1f0
[ 23.841502] dev_close_many+0x94/0x160
[ 23.841505] unregister_netdevice_many_notify+0x160/0x9d0
[ 23.841510] unregister_netdevice_queue+0xf0/0x100
[ 23.841515] unregister_netdev+0x2c/0x58
[ 23.841519] rtl_remove_one+0xa0/0xe0
[ 23.841524] pci_device_remove+0x4c/0xf8
[ 23.841528] device_remove+0x54/0x90
[ 23.841534] device_release_driver_internal+0x1d4/0x238
[ 23.841539] device_release_driver+0x20/0x38
[ 23.841544] pci_stop_bus_device+0x84/0xe0
[ 23.841548] pci_stop_bus_device+0x40/0xe0
[ 23.841552] pci_stop_root_bus+0x48/0x80
[ 23.841555] dw_pcie_host_deinit+0x34/0xe0
[ 23.841559] rockchip_pcie_shutdown+0x20/0x38
[ 23.841565] platform_shutdown+0x2c/0x48
[ 23.841571] device_shutdown+0x150/0x278
[ 23.841575] kernel_restart+0x4c/0xb8
Add a netif_device_present() guard around the rtl8169_down() call in
rtl8169_close(), to avoid rtl8169_down() from being called twice.
This matches how e.g. e1000e_close() has a netif_device_present() guard
around the e1000e_down() call.
Signed-off-by: Niklas Cassel <cassel@kernel.org>
---
drivers/net/ethernet/realtek/r8169_main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 4eebd9cb40a3..0300a06ae260 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4879,7 +4879,8 @@ static int rtl8169_close(struct net_device *dev)
pm_runtime_get_sync(&pdev->dev);
netif_stop_queue(dev);
- rtl8169_down(tp);
+ if (netif_device_present(tp->dev))
+ rtl8169_down(tp);
rtl8169_rx_clear(tp);
free_irq(tp->irq, tp);
--
2.49.0
next reply other threads:[~2025-04-15 9:53 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-15 9:53 Niklas Cassel [this message]
2025-04-15 18:48 ` [PATCH] r8169: do not call rtl8169_down() twice on shutdown Heiner Kallweit
2025-04-16 14:13 ` Niklas Cassel
2025-04-16 15:45 ` Krishna Chaitanya Chundru
2025-04-16 16:03 ` Niklas Cassel
2025-04-16 17:15 ` Krishna Chaitanya Chundru
2025-04-18 17:19 ` Manivannan Sadhasivam
2025-04-18 21:52 ` Heiner Kallweit
2025-04-19 10:18 ` Heiner Kallweit
2025-04-19 23:18 ` Krishna Chaitanya Chundru
2025-04-20 6:25 ` Heiner Kallweit
2025-04-23 17:39 ` Bjorn Helgaas
2025-04-23 17:50 ` Manivannan Sadhasivam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250415095335.506266-2-cassel@kernel.org \
--to=cassel@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=netdev@vger.kernel.org \
--cc=nic_swsd@realtek.com \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.