Re: [PATCH net v2] Fix race for duplicate reqsk on identical SYN

From: Florian Westphal
Date: Fri Jun 14 2024 - 06:55:17 EST


luoxuanqiang <luoxuanqiang@xxxxxxxxxx> 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.