diff options
| author | Kuniyuki Iwashima <kuniyu@google.com> | 2026-05-18 08:07:10 +0300 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-05-21 05:12:29 +0300 |
| commit | 567dbca22b373b05be0aa46eb2e64ee92d4f4790 (patch) | |
| tree | 13b0f992c7af5e3667230e9b13cd05a55b6a8de3 | |
| parent | 2f7f86db167537bc9c6bb848fc77e4f1089aede2 (diff) | |
| download | linux-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.c | 1 |
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[], |
