Re: [syzbot ci] Re: net: Support per-netns device unregistration
From: Kuniyuki Iwashima <kuniyu@google.com>
Date: 2026-07-02 21:59:33
Also in:
syzbot
Subsystem:
networking [general], the rest · Maintainers:
"David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds
From: syzbot ci <redacted> Date: Thu, 02 Jul 2026 00:45:10 -0700
syzbot ci has tested the following series [v1] net: Support per-netns device unregistration https://lore.kernel.org/all/20260701214334.266991-1-kuniyu@google.com (local) * [PATCH v1 net-next 01/14] rtnetlink: Lock sock_net(skb->sk) in rtnl_newlink(). * [PATCH v1 net-next 02/14] rtnetlink: Call unregister_netdevice_many() only once in rtnl_link_unregister(). * [PATCH v1 net-next 03/14] rtnetlink: Add per-netns rtnl_work. * [PATCH v1 net-next 04/14] net: Wrap default_device_exit_net() with __rtnl_net_lock(). * [PATCH v1 net-next 05/14] net: Hold __rtnl_net_lock() in netdev_wait_allrefs_any(). * [PATCH v1 net-next 06/14] net: Add per-netns netdev unregistration infra. * [PATCH v1 net-next 07/14] net: Call unregister_netdevice_many() per netns. * [PATCH v1 net-next 08/14] veth: Support per-netns device unregistration. * [PATCH v1 net-next 09/14] bareudp: Protect bareudp_list with mutex. * [PATCH v1 net-next 10/14] bareudp: Support per-netns netdev unregistration. * [PATCH v1 net-next 11/14] ipvlan: Convert ipvl_port.count to refcount_t. * [PATCH v1 net-next 12/14] ipvlan: Synchronise ipvlan_init() and ipvlan_uninit() for the same lower dev. * [PATCH v1 net-next 13/14] ipvlan: Protect ipvl_port.ipvlans with mutex. * [PATCH v1 net-next 14/14] ipvlan: Support per-netns netdev unregistration. and found the following issue: possible deadlock in __dev_change_net_namespace Full report is available here: https://ci.syzbot.org/series/a744b257-d741-4780-8a53-f156b2a7afc9 *** possible deadlock in __dev_change_net_namespace tree: net-next URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git base: d6e81529749190123aa0040626c7e5dbc20fdc9a arch: amd64 compiler: Debian clang version 22.1.6 (++20260514074242+fc4aad7b5db3-1~exp1~20260514074407.73), Debian LLD 22.1.6 config: https://ci.syzbot.org/builds/243cd0ec-28f9-4d21-8f16-3d2fbad8388d/config syz repro: https://ci.syzbot.org/findings/a8a0740d-fdec-4a20-9aa5-7cb955707913/syz_repro veth0_macvtap: left promiscuous mode ============================================ WARNING: possible recursive locking detected syzkaller #0 Not tainted -------------------------------------------- syz.1.18/5814 is trying to acquire lock: ffffffff9a9b0418 (&net->dev_unreg_lock){+.+.}-{3:3}, at: spin_lock include/linux/spinlock.h:342 [inline] ffffffff9a9b0418 (&net->dev_unreg_lock){+.+.}-{3:3}, at: unregister_netdevice_move_net net/core/dev.c:-1 [inline] ffffffff9a9b0418 (&net->dev_unreg_lock){+.+.}-{3:3}, at: __dev_change_net_namespace+0x1479/0x2200 net/core/dev.c:12768 but task is already holding lock: ffff88810b6cf8d8 (&net->dev_unreg_lock){+.+.}-{3:3}, at: spin_lock include/linux/spinlock.h:342 [inline] ffff88810b6cf8d8 (&net->dev_unreg_lock){+.+.}-{3:3}, at: unregister_netdevice_move_net net/core/dev.c:-1 [inline] ffff88810b6cf8d8 (&net->dev_unreg_lock){+.+.}-{3:3}, at: __dev_change_net_namespace+0x146a/0x2200 net/core/dev.c:12768 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(&net->dev_unreg_lock); lock(&net->dev_unreg_lock); *** DEADLOCK *** May be due to missing lock nesting notation
Oh right, I'll squash this to patch 6. ---8<---
diff --git a/net/core/dev.c b/net/core/dev.c
index 57fb4741d0ac..fcd58c2aa030 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c@@ -12574,10 +12574,10 @@ static void unregister_netdevice_move_net(struct net *net_old, { if (net_old > net) { spin_lock(&net->dev_unreg_lock); - spin_lock(&net_old->dev_unreg_lock); + spin_lock_nested(&net_old->dev_unreg_lock, SINGLE_DEPTH_NESTING); } else { spin_lock(&net_old->dev_unreg_lock); - spin_lock(&net->dev_unreg_lock); + spin_lock_nested(&net->dev_unreg_lock, SINGLE_DEPTH_NESTING); } if (!list_empty(&dev->unreg_list_net)) { ---8<---