Commit 57889a8f6d49 for kernel

commit 57889a8f6d49fc153aa0017d13086ab736567f8a
Author: Qingfang Deng <qingfang.deng@linux.dev>
Date:   Mon Nov 2 11:59:43 2026 +0800

    tcp: initialize send sequence numbers before deferring TFO

    TCP_FASTOPEN_CONNECT can return from connect() before tcp_connect_init()
    when a cached cookie or cookieless Fast Open allows deferring the SYN.
    At this point write_seq contains the initial sequence number, while
    snd_una and snd_nxt have not been initialized to that sequence number.

    Consequently, inet_diag and /proc/net/tcp{,6} report the initial
    sequence number as the send queue length despite no SYN or payload being
    queued.

    Initialize snd_una and snd_nxt to write_seq before marking the
    connection as deferred. Both sequence-based queue lengths then remain
    zero until the first write starts the connection and runs
    tcp_connect_init().

    Fixes: 19f6d3f3c842 ("net/tcp-fastopen: Add new API support")
    Signed-off-by: Qingfang Deng <qingfang.deng@linux.dev>
    Reviewed-by: Eric Dumazet <edumazet@kernel.org>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Neal Cardwell <ncardwell@google.com>
    Link: https://patch.msgid.link/20261102035943.9700-1-qingfang.deng@linux.dev
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>

diff --git a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c
index 33451f00c4e8..7f7eb3cc1c04 100644
--- a/net/ipv4/tcp_fastopen.c
+++ b/net/ipv4/tcp_fastopen.c
@@ -545,6 +545,8 @@ bool tcp_fastopen_defer_connect(struct sock *sk, int *err)

 	if (tp->fastopen_connect && !tp->fastopen_req) {
 		if (tcp_fastopen_cookie_check(sk, &mss, &cookie)) {
+			WRITE_ONCE(tp->snd_una, tp->write_seq);
+			WRITE_ONCE(tp->snd_nxt, tp->write_seq);
 			inet_set_bit(DEFER_CONNECT, sk);
 			return true;
 		}