--- y/net/ipv4/tcp.c +++ t/net/ipv4/tcp.c @@ -1751,6 +1751,7 @@ int tcp_read_skb(struct sock *sk, skb_re __skb_unlink(skb, &sk->sk_receive_queue); used = recv_actor(sk, skb); if (used <= 0) { + consume_skb(skb); if (!copied) copied = used; break; @@ -1764,7 +1765,6 @@ int tcp_read_skb(struct sock *sk, skb_re break; } consume_skb(skb); - break; } WRITE_ONCE(tp->copied_seq, seq);