This series fixes a regression where locked SO_RCVBUF sockets suffer from Silly Window Syndrome (SWS).
Recent memory fragmentation optimizations apply truesize penalties to the scaling_ratio. For applications locking SO_RCVBUF (like Java/Tomcat) and processing small packets, this drops the scaling_ratio to 1. This collapses the advertised window and causes 504 Gateway Timeouts. Patch 1 bypasses this penalty for locked buffers unless skb->len > advmss. Patch 2 adds a packetdrill test. Link to v1: https://lore.kernel.org/all/[email protected]/ v1 -> v2: - Shifted protection from window_clamp to scaling_ratio based on Jakub Kicinski's feedback. - Added skb->len > advmss check to ensure large aggregate payloads (GRO) are still penalized. This allows tcp_rcv_neg_window.pkt to pass. - Added a new packetdrill test (Patch 2/2). Testing: - Verified fix in a live Java/Tomcat environment (504 timeouts resolved). - Verified deadlock prevention via the new tcp_locked_rcvbuf_sws.pkt. - Passed upstream regression tests: tcp_rcv_neg_window.pkt, tcp_rcv_wnd_shrink_allowed.pkt, tcp_rcv_wnd_shrink_nomem.pkt, tcp_rcv_zero_wnd_fin.pkt, and tcp_rcv_big_endseq.pkt. Ankit Jain (2): tcp: protect locked SO_RCVBUF from Silly Window Syndrome selftests/net: add packetdrill test for locked SO_RCVBUF SWS net/ipv4/tcp_input.c | 8 ++++- .../net/packetdrill/tcp_locked_rcvbuf_sws.pkt | 34 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/net/packetdrill/tcp_locked_rcvbuf_sws.pkt -- 2.53.0

