tcp: remove redundant check on tskb
authorColin Ian King <colin.king@canonical.com>
Thu, 4 Apr 2019 14:46:03 +0000 (15:46 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 7 Apr 2019 01:18:14 +0000 (18:18 -0700)
The non-null check on tskb is always false because it is in an else
path of a check on tskb and hence tskb is null in this code block.
This is check is therefore redundant and can be removed as well
as the label coalesc.

if (tsbk) {
        ...
} else {
        ...
        if (unlikely(!skb)) {
                if (tskb)       /* can never be true, redundant code */
                        goto coalesc;
                return;
        }
}

Addresses-Coverity: ("Logically dead code")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c

index e265d1a..3206192 100644 (file)
@@ -3088,7 +3088,6 @@ void tcp_send_fin(struct sock *sk)
                tskb = skb_rb_last(&sk->tcp_rtx_queue);
 
        if (tskb) {
-coalesce:
                TCP_SKB_CB(tskb)->tcp_flags |= TCPHDR_FIN;
                TCP_SKB_CB(tskb)->end_seq++;
                tp->write_seq++;
@@ -3104,11 +3103,9 @@ coalesce:
                }
        } else {
                skb = alloc_skb_fclone(MAX_TCP_HEADER, sk->sk_allocation);
-               if (unlikely(!skb)) {
-                       if (tskb)
-                               goto coalesce;
+               if (unlikely(!skb))
                        return;
-               }
+
                INIT_LIST_HEAD(&skb->tcp_tsorted_anchor);
                skb_reserve(skb, MAX_TCP_HEADER);
                sk_forced_mem_schedule(sk, skb->truesize);