summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKuniyuki Iwashima <kuniyu@google.com>2026-05-18 08:07:10 +0300
committerJakub Kicinski <kuba@kernel.org>2026-05-21 05:12:29 +0300
commit567dbca22b373b05be0aa46eb2e64ee92d4f4790 (patch)
tree13b0f992c7af5e3667230e9b13cd05a55b6a8de3
parent2f7f86db167537bc9c6bb848fc77e4f1089aede2 (diff)
downloadlinux-567dbca22b373b05be0aa46eb2e64ee92d4f4790.tar.xz
geneve: Remove synchronize_net() in geneve_unquiesce().
When changing the geneve config, geneve_changelink() sandwiches the config memcpy() between geneve_quiesce() and geneve_unquiesce(). geneve_quiesce() temporarily clears geneve->sock[46] and their sk_user_data, and then calls synchronize_net() to wait for inflight fast paths to finish. geneve_unquiesce() then restores the cleared pointers, but it also superfluously calls synchronize_net(). The latter synchronize_net() provides no benefit; with or without it, inflight fast paths can see either the NULL pointers or the original pointers alongside the new configuration. Let's remove the redundant synchronize_net() in geneve_unquiesce(). Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com> Link: https://patch.msgid.link/20260518050726.318824-4-kuniyu@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/geneve.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
index 4e5d0a09a82d..e8ff03ed87dc 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -2206,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[],