Message ID | 20250107173838.1130187-3-edumazet@google.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: reduce RTNL pressure in unregister_netdevice() | expand |
diff --git a/net/core/dev.c b/net/core/dev.c index 9e1eb272e4feaf40dc87defd54d691634e0902e5..ef6426aad84dc00740a1716c8fd4cfd48ee17cf3 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -11526,8 +11526,10 @@ void unregister_netdevice_many_notify(struct list_head *head, unlist_netdevice(dev); WRITE_ONCE(dev->reg_state, NETREG_UNREGISTERING); } - flush_all_backlogs(); + __rtnl_unlock(); + flush_all_backlogs(); + rtnl_lock(); synchronize_net(); list_for_each_entry(dev, head, unreg_list) {
flush_all_backlogs() is called from unregister_netdevice_many_notify() as part of netdevice dismantles. This is currently called under RTNL, and can last up to 20ms on busy hosts. There is no reason to block RTNL at this stage. Signed-off-by: Eric Dumazet <edumazet@google.com> --- net/core/dev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)