]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
inet: reduce inet_csk_clone_lock() indent level
authorEric Dumazet <edumazet@google.com>
Wed, 12 Feb 2025 13:13:27 +0000 (13:13 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 14 Feb 2025 21:40:33 +0000 (13:40 -0800)
Return early from inet_csk_clone_lock() if the socket
allocation failed, to reduce the indentation level.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250212131328.1514243-2-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/inet_connection_sock.c

index 2b7775b90a0907727fa3e4d04cfa77f6e76e82b0..1c00069552ccfbf8c0d0d91d14cf951a39711273 100644 (file)
@@ -1237,39 +1237,43 @@ struct sock *inet_csk_clone_lock(const struct sock *sk,
                                 const gfp_t priority)
 {
        struct sock *newsk = sk_clone_lock(sk, priority);
+       struct inet_connection_sock *newicsk;
 
-       if (newsk) {
-               struct inet_connection_sock *newicsk = inet_csk(newsk);
+       if (!newsk)
+               return NULL;
 
-               inet_sk_set_state(newsk, TCP_SYN_RECV);
-               newicsk->icsk_bind_hash = NULL;
-               newicsk->icsk_bind2_hash = NULL;
+       newicsk = inet_csk(newsk);
 
-               inet_sk(newsk)->inet_dport = inet_rsk(req)->ir_rmt_port;
-               inet_sk(newsk)->inet_num = inet_rsk(req)->ir_num;
-               inet_sk(newsk)->inet_sport = htons(inet_rsk(req)->ir_num);
+       inet_sk_set_state(newsk, TCP_SYN_RECV);
+       newicsk->icsk_bind_hash = NULL;
+       newicsk->icsk_bind2_hash = NULL;
 
-               /* listeners have SOCK_RCU_FREE, not the children */
-               sock_reset_flag(newsk, SOCK_RCU_FREE);
+       inet_sk(newsk)->inet_dport = inet_rsk(req)->ir_rmt_port;
+       inet_sk(newsk)->inet_num = inet_rsk(req)->ir_num;
+       inet_sk(newsk)->inet_sport = htons(inet_rsk(req)->ir_num);
 
-               inet_sk(newsk)->mc_list = NULL;
+       /* listeners have SOCK_RCU_FREE, not the children */
+       sock_reset_flag(newsk, SOCK_RCU_FREE);
 
-               newsk->sk_mark = inet_rsk(req)->ir_mark;
-               atomic64_set(&newsk->sk_cookie,
-                            atomic64_read(&inet_rsk(req)->ir_cookie));
+       inet_sk(newsk)->mc_list = NULL;
 
-               newicsk->icsk_retransmits = 0;
-               newicsk->icsk_backoff     = 0;
-               newicsk->icsk_probes_out  = 0;
-               newicsk->icsk_probes_tstamp = 0;
+       newsk->sk_mark = inet_rsk(req)->ir_mark;
+       atomic64_set(&newsk->sk_cookie,
+                    atomic64_read(&inet_rsk(req)->ir_cookie));
 
-               /* Deinitialize accept_queue to trap illegal accesses. */
-               memset(&newicsk->icsk_accept_queue, 0, sizeof(newicsk->icsk_accept_queue));
+       newicsk->icsk_retransmits = 0;
+       newicsk->icsk_backoff     = 0;
+       newicsk->icsk_probes_out  = 0;
+       newicsk->icsk_probes_tstamp = 0;
 
-               inet_clone_ulp(req, newsk, priority);
+       /* Deinitialize accept_queue to trap illegal accesses. */
+       memset(&newicsk->icsk_accept_queue, 0,
+              sizeof(newicsk->icsk_accept_queue));
+
+       inet_clone_ulp(req, newsk, priority);
+
+       security_inet_csk_clone(newsk, req);
 
-               security_inet_csk_clone(newsk, req);
-       }
        return newsk;
 }
 EXPORT_SYMBOL_GPL(inet_csk_clone_lock);