From: luoxuanqiang <luoxuanqiang@kylinos.cn>
To: Florian Westphal <fw@strlen.de>
Cc: edumazet@google.com, davem@davemloft.net, dsahern@kernel.org,
kuba@kernel.org, linux-kernel@vger.kernel.org,
netdev@vger.kernel.org, pabeni@redhat.com, kuniyu@amazon.com,
dccp@vger.kernel.org
Subject: Re: [PATCH net v2] Fix race for duplicate reqsk on identical SYN
Date: Fri, 14 Jun 2024 20:42:07 +0800 [thread overview]
Message-ID: <7075bb26-ede9-0dc7-fe93-e18703e5ddaa@kylinos.cn> (raw)
In-Reply-To: <20240614105441.GA24596@breakpoint.cc>
在 2024/6/14 18:54, Florian Westphal 写道:
> luoxuanqiang <luoxuanqiang@kylinos.cn> wrote:
>> include/net/inet_connection_sock.h | 2 +-
>> net/dccp/ipv4.c | 2 +-
>> net/dccp/ipv6.c | 2 +-
>> net/ipv4/inet_connection_sock.c | 15 +++++++++++----
>> net/ipv4/tcp_input.c | 11 ++++++++++-
>> 5 files changed, 24 insertions(+), 8 deletions(-)
>>
>> diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
>> index 7d6b1254c92d..8773d161d184 100644
>> --- a/include/net/inet_connection_sock.h
>> +++ b/include/net/inet_connection_sock.h
>> @@ -264,7 +264,7 @@ struct sock *inet_csk_reqsk_queue_add(struct sock *sk,
>> struct request_sock *req,
>> struct sock *child);
>> void inet_csk_reqsk_queue_hash_add(struct sock *sk, struct request_sock *req,
>> - unsigned long timeout);
>> + unsigned long timeout, bool *found_dup_sk);
> Nit:
>
> I think it would be preferrable to change retval to bool rather than
> bool *found_dup_sk extra arg, so one can do
>
> bool inet_csk_reqsk_queue_hash_add(struct sock *sk, struct request_sock *req,
> unsigned long timeout)
> {
> if (!reqsk_queue_hash_req(req, timeout))
> return false;
>
> i.e. let retval indicate wheter reqsk was inserted or not.
>
> Patch looks good to me otherwise.
Thank you for your confirmation!
Regarding your suggestion, I had considered it before,
but besides tcp_conn_request() calling inet_csk_reqsk_queue_hash_add(),
dccp_v4(v6)_conn_request() also calls it. However, there is no
consideration for a failed insertion within that function, so it's
reasonable to let the caller decide whether to check for duplicate
reqsk.
The purpose of my modification this time is solely to confirm if a
reqsk for the same connection has already been inserted into the ehash.
If the insertion fails, inet_ehash_insert() will handle the
non-insertion gracefully, and I only need to release the duplicate
reqsk. I believe this change is minimal and effective.
Those are my considerations.
next prev parent reply other threads:[~2024-06-14 12:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-14 10:26 [PATCH net v2] Fix race for duplicate reqsk on identical SYN luoxuanqiang
2024-06-14 10:54 ` Florian Westphal
2024-06-14 12:42 ` luoxuanqiang [this message]
2024-06-14 22:24 ` Kuniyuki Iwashima
2024-06-15 6:40 ` Eric Dumazet
2024-06-17 2:01 ` luoxuanqiang
2024-06-17 8:07 ` luoxuanqiang
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=7075bb26-ede9-0dc7-fe93-e18703e5ddaa@kylinos.cn \
--to=luoxuanqiang@kylinos.cn \
--cc=davem@davemloft.net \
--cc=dccp@vger.kernel.org \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=fw@strlen.de \
--cc=kuba@kernel.org \
--cc=kuniyu@amazon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox