mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-28 14:34:17 -04:00
net: Hold __rtnl_net_lock() in netdev_wait_allrefs_any().
Currently, netdev_run_todo() processes pending devices from multiple namespaces in a batch. To expand the per-netns RTNL coverage for NETDEV_UNREGISTER, let's acquire __rtnl_net_lock() in netdev_wait_allrefs_any(). Note that netdev_run_todo() itself will need to be namespacified before RTNL is removed. Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com> Link: https://patch.msgid.link/20260703001009.1572444-6-kuniyu@google.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
2b12ec2578
commit
0fa296dd52
@@ -11613,8 +11613,13 @@ static struct net_device *netdev_wait_allrefs_any(struct list_head *list)
|
||||
rtnl_lock();
|
||||
|
||||
/* Rebroadcast unregister notification */
|
||||
list_for_each_entry(dev, list, todo_list)
|
||||
list_for_each_entry(dev, list, todo_list) {
|
||||
struct net *net = dev_net(dev);
|
||||
|
||||
__rtnl_net_lock(net);
|
||||
call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
|
||||
__rtnl_net_unlock(net);
|
||||
}
|
||||
|
||||
__rtnl_unlock();
|
||||
rcu_barrier();
|
||||
|
||||
Reference in New Issue
Block a user