summaryrefslogtreecommitdiffstats
path: root/net/core/rtnetlink.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2022-02-09 18:59:32 -0800
committerDavid S. Miller <davem@davemloft.net>2022-02-10 15:30:26 +0000
commitede6c39c4f9068cbeb4036448c45fff5393e0432 (patch)
treedbeb843af969bdd903410d4ea5351db041893058 /net/core/rtnetlink.c
parentca2d5f1ff05955da9506055e88c4bbb71da190f1 (diff)
downloadlinux-ede6c39c4f9068cbeb4036448c45fff5393e0432.tar.gz
linux-ede6c39c4f9068cbeb4036448c45fff5393e0432.tar.bz2
linux-ede6c39c4f9068cbeb4036448c45fff5393e0432.zip
net: make net->dev_unreg_count atomic
Having to acquire rtnl from netdev_run_todo() for every dismantled device is not desirable when/if rtnl is under stress. 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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 710da8a36729..a6fad3df42a8 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -459,7 +459,7 @@ static void rtnl_lock_unregistering_all(void)
* setup_net() and cleanup_net() are not possible.
*/
for_each_net(net) {
- if (net->dev_unreg_count > 0) {
+ if (atomic_read(&net->dev_unreg_count) > 0) {
unregistering = true;
break;
}