tcp: avoid collapses in tcp_prune_queue() if possible
am: d18ec55af9
Change-Id: I1f2f48c79d95567cd79ff6b79395beacf2466f87
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index be22b7d..62df632 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -4878,6 +4878,9 @@
else if (tcp_under_memory_pressure(sk))
tp->rcv_ssthresh = min(tp->rcv_ssthresh, 4U * tp->advmss);
+ if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf)
+ return 0;
+
tcp_collapse_ofo_queue(sk);
if (!skb_queue_empty(&sk->sk_receive_queue))
tcp_collapse(sk, &sk->sk_receive_queue,