tcp: refine sk_rcvbuf increase for ooo packets
authorEric Dumazet <edumazet@google.com>
Mon, 7 Jul 2025 21:38:59 +0000 (21:38 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 10 Jul 2025 02:24:10 +0000 (19:24 -0700)
When a passive flow has not been accepted yet, it is
not wise to increase sk_rcvbuf when receiving ooo packets.

A very busy server might tune down tcp_rmem[1] to better
control how much memory can be used by sockets waiting
in its listeners accept queues.

Fixes: 63ad7dfedfae ("tcp: adjust rcvbuf in presence of reorders")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20250707213900.1543248-2-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/tcp_input.c

index 12c2e6fc85c62304565e4f2f8d22a916cf73db0c..68bc79eb90197b1bf3e8f5ddfc8762cf331ca1c7 100644 (file)
@@ -5181,7 +5181,9 @@ end:
                skb_condense(skb);
                skb_set_owner_r(skb, sk);
        }
-       tcp_rcvbuf_grow(sk);
+       /* do not grow rcvbuf for not-yet-accepted or orphaned sockets. */
+       if (sk->sk_socket)
+               tcp_rcvbuf_grow(sk);
 }
 
 static int __must_check tcp_queue_rcv(struct sock *sk, struct sk_buff *skb,