From: Jiayuan Chen <jiayuan.chen@linux.dev>
To: Qingfang Deng <qingfang.deng@linux.dev>,
Eric Dumazet <edumazet@kernel.org>,
Neal Cardwell <ncardwell@google.com>,
Kuniyuki Iwashima <kuniyu@google.com>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>,
Yuchung Cheng <ycheng@google.com>, Wei Wang <weiwan@google.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net] tcp: initialize send sequence numbers before deferring TFO
Date: Mon, 2 Nov 2026 14:11:43 +0800 [thread overview]
Message-ID: <bfbc4b3c-fe19-4070-97b4-4ff8ded06011@linux.dev> (raw)
In-Reply-To: <20261102035943.9700-1-qingfang.deng@linux.dev>
On 11/2/26 11:59 AM, Qingfang Deng wrote:
> 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().
This patch looks good to me. But idiag_wqueue can still go negative
on the normal connect path, since the socket is already hashed and
diag does not take the socket lock. We always set write_seq first,
then init snd_una later:
tcp_v4_connect
WRITE_ONCE(tp->write_seq, st.seq)
tcp_connect
tcp_connect_init
WRITE_ONCE(tp->snd_una, tp->write_seq)
Can you try this instead?
r->idiag_wqueue = READ_ONCE(sk->sk_wmem_queued) ?
READ_ONCE(tp->write_seq) - READ_ONCE(tp->snd_una) : 0;
next prev parent reply other threads:[~2026-11-02 6:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-02 3:59 [PATCH net] tcp: initialize send sequence numbers before deferring TFO Qingfang Deng
2026-11-02 6:11 ` Jiayuan Chen [this message]
2026-11-02 7:40 ` Qingfang Deng
2026-11-02 8:00 ` Eric Dumazet
2026-11-02 8:13 ` Qingfang Deng
2026-11-02 8:20 ` Eric Dumazet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bfbc4b3c-fe19-4070-97b4-4ff8ded06011@linux.dev \
--to=jiayuan.chen@linux.dev \
--cc=davem@davemloft.net \
--cc=edumazet@kernel.org \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ncardwell@google.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=qingfang.deng@linux.dev \
--cc=weiwan@google.com \
--cc=ycheng@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.