diff options
| author | Kuniyuki Iwashima <kuniyu@amazon.com> | 2025-01-06 16:07:50 +0900 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2025-01-07 17:49:20 -0800 |
| commit | ca779f40654a046613ea812126055f161844f17b (patch) | |
| tree | 12cf80b9ea6813716d942626815aed2650fe5da5 | |
| parent | a239e0625097bccdd4065390952fe9e6d0fdf02b (diff) | |
net: Hold rtnl_net_lock() in (un)?register_netdevice_notifier_net().
(un)?register_netdevice_notifier_net() hold RTNL before triggering the
notifier for all netdev in the netns.
Let's convert the RTNL to rtnl_net_lock().
Note that the per-netns netdev notifier is protected by per-netns RTNL.
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250106070751.63146-3-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
| -rw-r--r-- | net/core/dev.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 34ded7974675..06a5c11688c1 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1897,9 +1897,10 @@ int register_netdevice_notifier_net(struct net *net, struct notifier_block *nb) { int err; - rtnl_lock(); + rtnl_net_lock(net); err = __register_netdevice_notifier_net(net, nb, false); - rtnl_unlock(); + rtnl_net_unlock(net); + return err; } EXPORT_SYMBOL(register_netdevice_notifier_net); @@ -1925,9 +1926,10 @@ int unregister_netdevice_notifier_net(struct net *net, { int err; - rtnl_lock(); + rtnl_net_lock(net); err = __unregister_netdevice_notifier_net(net, nb); - rtnl_unlock(); + rtnl_net_unlock(net); + return err; } EXPORT_SYMBOL(unregister_netdevice_notifier_net); |
