* [PATCH] net: net_failover: Fix the deadlock in slave register
@ 2026-04-23 7:59 Faicker Mo
2026-04-26 8:10 ` Simon Horman
0 siblings, 1 reply; 2+ messages in thread
From: Faicker Mo @ 2026-04-23 7:59 UTC (permalink / raw)
To: sridhar.samudrala@intel.com, andrew+netdev@lunn.ch,
David S. Miller, Eric Dumazet, Paolo Abeni, sdf@fomichev.me
Cc: open list:NETWORKING DRIVERS, open list
There is netdev_lock_ops() before the NETDEV_REGISTER notifier
in register_netdevice(), so use the non-locking functions
in net_failover_slave_register().
Call Trace:
<TASK>
__schedule+0x30d/0x7a0
schedule+0x27/0x90
schedule_preempt_disabled+0x15/0x30
__mutex_lock.constprop.0+0x538/0x9e0
__mutex_lock_slowpath+0x13/0x20
mutex_lock+0x3b/0x50
dev_set_mtu+0x40/0xe0
net_failover_slave_register+0x24/0x280
failover_slave_register+0x103/0x1b0
failover_event+0x15e/0x210
? dropmon_net_event+0xac/0xe0
notifier_call_chain+0x5e/0xe0
raw_notifier_call_chain+0x16/0x30
call_netdevice_notifiers_info+0x52/0xa0
register_netdevice+0x5f4/0x7c0
register_netdev+0x1e/0x40
_mlx5e_probe+0xe2/0x370 [mlx5_core]
mlx5e_probe+0x59/0x70 [mlx5_core]
? __pfx_mlx5e_probe+0x10/0x10 [mlx5_core]
Fixes: 4c975fd70002 ("net: hold instance lock during NETDEV_REGISTER/UP")
Signed-off-by: Faicker Mo <faicker.mo@zenlayer.com>
---
drivers/net/net_failover.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c
index d0361aaf25ef..6702490eb4ed 100644
--- a/drivers/net/net_failover.c
+++ b/drivers/net/net_failover.c
@@ -502,7 +502,7 @@ static int net_failover_slave_register(struct net_device *slave_dev,
/* Align MTU of slave with failover dev */
orig_mtu = slave_dev->mtu;
- err = dev_set_mtu(slave_dev, failover_dev->mtu);
+ err = netif_set_mtu(slave_dev, failover_dev->mtu);
if (err) {
netdev_err(failover_dev, "unable to change mtu of %s to %u register failed\n",
slave_dev->name, failover_dev->mtu);
@@ -512,7 +512,7 @@ static int net_failover_slave_register(struct net_device *slave_dev,
dev_hold(slave_dev);
if (netif_running(failover_dev)) {
- err = dev_open(slave_dev, NULL);
+ err = netif_open(slave_dev, NULL);
if (err && (err != -EBUSY)) {
netdev_err(failover_dev, "Opening slave %s failed err:%d\n",
slave_dev->name, err);
@@ -565,7 +565,7 @@ static int net_failover_slave_register(struct net_device *slave_dev,
dev_close(slave_dev);
err_dev_open:
dev_put(slave_dev);
- dev_set_mtu(slave_dev, orig_mtu);
+ netif_set_mtu(slave_dev, orig_mtu);
done:
return err;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] net: net_failover: Fix the deadlock in slave register
2026-04-23 7:59 [PATCH] net: net_failover: Fix the deadlock in slave register Faicker Mo
@ 2026-04-26 8:10 ` Simon Horman
0 siblings, 0 replies; 2+ messages in thread
From: Simon Horman @ 2026-04-26 8:10 UTC (permalink / raw)
To: Faicker Mo
Cc: sridhar.samudrala@intel.com, andrew+netdev@lunn.ch,
David S. Miller, Eric Dumazet, Paolo Abeni, sdf@fomichev.me,
open list:NETWORKING DRIVERS, open list
On Thu, Apr 23, 2026 at 07:59:43AM +0000, Faicker Mo wrote:
> There is netdev_lock_ops() before the NETDEV_REGISTER notifier
> in register_netdevice(), so use the non-locking functions
> in net_failover_slave_register().
>
> Call Trace:
> <TASK>
> __schedule+0x30d/0x7a0
> schedule+0x27/0x90
> schedule_preempt_disabled+0x15/0x30
> __mutex_lock.constprop.0+0x538/0x9e0
> __mutex_lock_slowpath+0x13/0x20
> mutex_lock+0x3b/0x50
> dev_set_mtu+0x40/0xe0
> net_failover_slave_register+0x24/0x280
> failover_slave_register+0x103/0x1b0
> failover_event+0x15e/0x210
> ? dropmon_net_event+0xac/0xe0
> notifier_call_chain+0x5e/0xe0
> raw_notifier_call_chain+0x16/0x30
> call_netdevice_notifiers_info+0x52/0xa0
> register_netdevice+0x5f4/0x7c0
> register_netdev+0x1e/0x40
> _mlx5e_probe+0xe2/0x370 [mlx5_core]
> mlx5e_probe+0x59/0x70 [mlx5_core]
> ? __pfx_mlx5e_probe+0x10/0x10 [mlx5_core]
>
> Fixes: 4c975fd70002 ("net: hold instance lock during NETDEV_REGISTER/UP")
> Signed-off-by: Faicker Mo <faicker.mo@zenlayer.com>
...
Unfortunately this patch does not apply: it seems that somehow all the tabs
were converted into spaces.
> @@ -565,7 +565,7 @@ static int net_failover_slave_register(struct net_device *slave_dev,
> dev_close(slave_dev);
Claude Code flags that that this needs to be changed to netif_close()
> err_dev_open:
> dev_put(slave_dev);
> - dev_set_mtu(slave_dev, orig_mtu);
> + netif_set_mtu(slave_dev, orig_mtu);
> done:
> return err;
> }
--
pw-bot: changes-requested
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-04-26 8:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-23 7:59 [PATCH] net: net_failover: Fix the deadlock in slave register Faicker Mo
2026-04-26 8:10 ` Simon Horman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox