diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2026-05-21 05:12:31 +0300 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-05-21 05:12:31 +0300 |
| commit | 830d8771ae3c7bc90a62dde76a6556e612529fbc (patch) | |
| tree | d5238796a6963835b5ebd66b14263a1bd47928a8 | |
| parent | 25ae123db10ba9ab890b56bcdb0a4363aee8529a (diff) | |
| parent | e6409584dec6d67f5aa9e2e0f55e2c5f0f55d63f (diff) | |
| download | linux-830d8771ae3c7bc90a62dde76a6556e612529fbc.tar.xz | |
Merge branch 'udp_tunnel-speed-up-udp-tunnel-device-destruction-part-ii'
Kuniyuki Iwashima says:
====================
udp_tunnel: Speed up UDP tunnel device destruction (Part II)
Most of the UDP tunnel devices called synchronize_rcu() twice
during destruction, for example, vxlan had
1) synchronize_rcu() in udp_tunnel_sock_release()
2) synchronize_net() in vxlan_sock_release()
The former was already removed by:
https://lore.kernel.org/netdev/20260502031401.3557229-1-kuniyu@google.com/
This series removes the latter.
Patch 1 & 2 & 4 remove synchronize_net() placed before
udp_tunnel_sock_release().
Patch 3 removes yet another unnecessary synchronize_net() in
geneve_unquiesce().
Patch 5 is a follow-up patch for a sparse report by kernel test robot.
====================
Link: https://patch.msgid.link/20260518050726.318824-1-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
| -rw-r--r-- | drivers/net/bareudp.c | 3 | ||||
| -rw-r--r-- | drivers/net/geneve.c | 2 | ||||
| -rw-r--r-- | drivers/net/vxlan/vxlan_core.c | 1 |
3 files changed, 1 insertions, 5 deletions
diff --git a/drivers/net/bareudp.c b/drivers/net/bareudp.c index 890a0650d9cf..5ef841c85526 100644 --- a/drivers/net/bareudp.c +++ b/drivers/net/bareudp.c @@ -285,9 +285,8 @@ static void bareudp_sock_release(struct bareudp_dev *bareudp) { struct sock *sk; - sk = bareudp->sk; + sk = rtnl_dereference(bareudp->sk); rcu_assign_pointer(bareudp->sk, NULL); - synchronize_net(); udp_tunnel_sock_release(sk); } diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index b36fad833724..e8ff03ed87dc 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -1032,7 +1032,6 @@ static void geneve_sock_release(struct geneve_dev *geneve) #endif rcu_assign_pointer(geneve->sock4, NULL); - synchronize_net(); __geneve_sock_release(gs4); #if IS_ENABLED(CONFIG_IPV6) @@ -2207,7 +2206,6 @@ static void geneve_unquiesce(struct geneve_dev *geneve, struct geneve_sock *gs4, if (gs6) rcu_assign_sk_user_data(gs6->sk, gs6); #endif - synchronize_net(); } static int geneve_changelink(struct net_device *dev, struct nlattr *tb[], diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c index 00facbfabced..8c3885665b58 100644 --- a/drivers/net/vxlan/vxlan_core.c +++ b/drivers/net/vxlan/vxlan_core.c @@ -1515,7 +1515,6 @@ static void vxlan_sock_release(struct vxlan_dev *vxlan) #endif RCU_INIT_POINTER(vxlan->vn4_sock, NULL); - synchronize_net(); if (vxlan->cfg.flags & VXLAN_F_VNIFILTER) vxlan_vs_del_vnigrp(vxlan); |
