]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ipvs: do not propagate one-packet flag to synced conns
authorZhiling Zou <roxy520tt@gmail.com>
Mon, 13 Jul 2026 11:52:32 +0000 (19:52 +0800)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 23 Jul 2026 15:59:02 +0000 (17:59 +0200)
Synced connections can be created before their destination exists. When
the destination is later added, ip_vs_bind_dest() copies connection flags
from the destination into cp->flags.

IP_VS_CONN_F_ONE_PACKET connections are not synced. If a synced
connection inherits IP_VS_CONN_F_ONE_PACKET while it is already hashed,
expiry can treat it as a one-packet connection and skip unlinking the
existing conn_tab node, leaving stale hash nodes pointing at a freed
struct ip_vs_conn.

Drop IP_VS_CONN_F_ONE_PACKET from destination flags when binding synced
connections.

Fixes: 26ec037f9841 ("IPVS: one-packet scheduling")
Cc: stable@vger.kernel.org
Reported-by: Yuan Tan <yuantan098@gmail.com>
Reported-by: Yifan Wu <yifanwucs@gmail.com>
Reported-by: Juefei Pu <tomapufckgml@gmail.com>
Reported-by: Xin Liu <bird@lzu.edu.cn>
Suggested-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Zhiling Zou <roxy520tt@gmail.com>
Signed-off-by: Ren Wei <n05ec@lzu.edu.cn>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/ipvs/ip_vs_conn.c

index 6ed2622363f0d696c53c8317bba6b2ef0fb4c768..0682cec5f0a7436421207054d6ab39f72f866004 100644 (file)
@@ -1014,6 +1014,9 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest)
        flags = cp->flags;
        /* Bind with the destination and its corresponding transmitter */
        if (flags & IP_VS_CONN_F_SYNC) {
+               /* Synced conns are hashed, so they can not get this flag */
+               conn_flags &= ~IP_VS_CONN_F_ONE_PACKET;
+
                /* if the connection is not template and is created
                 * by sync, preserve the activity flag.
                 */