diff options
| author | Eric Dumazet <edumazet@google.com> | 2025-01-14 20:55:27 +0000 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2025-01-15 19:17:03 -0800 |
| commit | 0734d7c3d93cdcb8a56ce914d3c661300f24434d (patch) | |
| tree | 80468bc3418393a591983bbe459a4c1d41f26474 /include/net | |
| parent | net: wwan: iosm: Fix hibernation by re-binding the driver around it (diff) | |
| download | linux-0734d7c3d93cdcb8a56ce914d3c661300f24434d.tar.gz linux-0734d7c3d93cdcb8a56ce914d3c661300f24434d.zip | |
net: expedite synchronize_net() for cleanup_net()
cleanup_net() is the single thread responsible
for netns dismantles, and a serious bottleneck.
Before we can get per-netns RTNL, make sure
all synchronize_net() called from this thread
are using rcu_synchronize_expedited().
v3: deal with CONFIG_NET_NS=n
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Jesse Brandeburg <jbrandeburg@cloudflare.com>
Link: https://patch.msgid.link/20250114205531.967841-2-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/net_namespace.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 5a2a0df8ad91..0f5eb9db0c62 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -210,6 +210,8 @@ void net_ns_barrier(void); struct ns_common *get_net_ns(struct ns_common *ns); struct net *get_net_ns_by_fd(int fd); +extern struct task_struct *cleanup_net_task; + #else /* CONFIG_NET_NS */ #include <linux/sched.h> #include <linux/nsproxy.h> |
