]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
geneve: Remove synchronize_net() in geneve_unquiesce().
authorKuniyuki Iwashima <kuniyu@google.com>
Mon, 18 May 2026 05:07:10 +0000 (05:07 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 21 May 2026 02:12:29 +0000 (19:12 -0700)
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>
drivers/net/geneve.c

index 4e5d0a09a82deb29f34a462d6441d55d374c7889..e8ff03ed87dc5d10a7668aded3eb6ae5d993d645 100644 (file)
@@ -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[],