]> www.infradead.org Git - users/willy/linux.git/commitdiff
tcp: Simplify error path in inet_csk_accept().
authorKuniyuki Iwashima <kuniyu@google.com>
Fri, 15 Aug 2025 20:16:11 +0000 (20:16 +0000)
committerJakub Kicinski <kuba@kernel.org>
Wed, 20 Aug 2025 02:20:58 +0000 (19:20 -0700)
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>
net/ipv4/inet_connection_sock.c

index 1e2df51427fed88d8a18a61b030f5e6234dadd8f..724bd9ed6cd48068331cfeb87d0f4e2895bd2923 100644 (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);