This is because only when in_sack is equal to false the pkt_len can be greater than or equal to skb->len, so checking the in_sack firstly will make the logic more clear. Signed-off-by: Xin Guo --- net/ipv4/tcp_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 71b76e98371a..293fb2cc8969 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -1375,7 +1375,7 @@ static int tcp_match_skb_to_sack(struct sock *sk, struct sk_buff *skb, pkt_len = new_len; } - if (pkt_len >= skb->len && !in_sack) + if (!in_sack && pkt_len >= skb->len) return 0; err = tcp_fragment(sk, TCP_FRAG_IN_RTX_QUEUE, skb, -- 2.43.0