diff options
author | Eric Dumazet <edumazet@google.com> | 2024-02-02 10:11:06 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2024-02-04 16:08:21 +0000 |
commit | ffabe98cb576097b77d404d39e8b3df03caa986a (patch) | |
tree | e9d296f71893ebfe40868b94239523ee25150138 /net/core/rtnetlink.c | |
parent | 45a96c407eb1cd44aa0179db8d600015616bcced (diff) |
net: make dev_unreg_count global
We can use a global dev_unreg_count counter instead
of a per netns one.
As a bonus we can factorize the changes done on it
for bulk device removals.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/rtnetlink.c')
-rw-r--r-- | net/core/rtnetlink.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index f6f29eb03ec2..31f433950c8d 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -483,24 +483,15 @@ EXPORT_SYMBOL_GPL(__rtnl_link_unregister); */ static void rtnl_lock_unregistering_all(void) { - struct net *net; - bool unregistering; DEFINE_WAIT_FUNC(wait, woken_wake_function); add_wait_queue(&netdev_unregistering_wq, &wait); for (;;) { - unregistering = false; rtnl_lock(); /* We held write locked pernet_ops_rwsem, and parallel * setup_net() and cleanup_net() are not possible. */ - for_each_net(net) { - if (atomic_read(&net->dev_unreg_count) > 0) { - unregistering = true; - break; - } - } - if (!unregistering) + if (!atomic_read(&dev_unreg_count)) break; __rtnl_unlock(); |