tcp: Simplify error path in inet_csk_accept().

When an error occurs in inet_csk_accept(), what we should do is
only call release_sock() and set the errno to arg->err.

But the path jumps to another label, which introduces unnecessary
initialisation and tests for newsk.

Let's simplify the error path and remove the redundant NULL
checks for newsk.

Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>
Link: https://patch.msgid.link/20250815201712.1745332-4-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Kuniyuki Iwashima 2025-08-15 20:16:11 +00:00 committed by Jakub Kicinski
parent 1068b48ed1
commit e2afa83296
1 changed files with 7 additions and 8 deletions

View File

@ -706,9 +706,9 @@ struct sock *inet_csk_accept(struct sock *sk, struct proto_accept_arg *arg)
spin_unlock_bh(&queue->fastopenq.lock);
}
out:
release_sock(sk);
if (newsk && mem_cgroup_sockets_enabled) {
if (mem_cgroup_sockets_enabled) {
gfp_t gfp = GFP_KERNEL | __GFP_NOFAIL;
int amt = 0;
@ -732,18 +732,17 @@ out:
release_sock(newsk);
}
if (req)
reqsk_put(req);
if (newsk)
inet_init_csk_locks(newsk);
inet_init_csk_locks(newsk);
return newsk;
out_err:
newsk = NULL;
req = NULL;
release_sock(sk);
arg->err = error;
goto out;
return NULL;
}
EXPORT_SYMBOL(inet_csk_accept);