diff options
author | 2024-10-04 15:10:29 -0700 | |
---|---|---|
committer | 2024-10-08 15:16:59 +0200 | |
commit | 76aed95319da25d6884dff01d5f0149e4b542f96 (patch) | |
tree | a4abd91a746cb82930cf34c1b588cb12e8613d4e /net/core/rtnl_net_debug.c | |
parent | Revert "rtnetlink: add guard for RTNL" (diff) | |
download | wireguard-linux-76aed95319da25d6884dff01d5f0149e4b542f96.tar.xz wireguard-linux-76aed95319da25d6884dff01d5f0149e4b542f96.zip |
rtnetlink: Add per-netns RTNL.
The goal is to break RTNL down into per-netns mutex.
This patch adds per-netns mutex and its helper functions, rtnl_net_lock()
and rtnl_net_unlock().
rtnl_net_lock() acquires the global RTNL and per-netns RTNL mutex, and
rtnl_net_unlock() releases them.
We will replace 800+ rtnl_lock() with rtnl_net_lock() and finally removes
rtnl_lock() in rtnl_net_lock().
When we need to nest per-netns RTNL mutex, we will use __rtnl_net_lock(),
and its locking order is defined by rtnl_net_lock_cmp_fn() as follows:
1. init_net is first
2. netns address ascending order
Note that the conversion will be done under CONFIG_DEBUG_NET_SMALL_RTNL
with LOCKDEP so that we can carefully add the extra mutex without slowing
down RTNL operations during conversion.
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'net/core/rtnl_net_debug.c')
0 files changed, 0 insertions, 0 deletions