Re: [PATCH net-next v2 0/2] tcp: don't set window_clamp from SO_RCVBUF before the socket is connected
flat view
From: Shashank Mohan Jain <hidden>
Date: 2026-10-12 13:25:31
Also in:
lkml
On Mon, Oct 12, 2026, netdev-bot+sashiko@kernel.org wrote:
[High] Does this check cover every case where SO_RCVBUF is applied before tcp_connect_init() runs?
You are right, it does not. The socket is already in TCP_SYN_SENT before tcp_connect_init() runs, so SO_RCVBUF applied in that gap - via TCP_FASTOPEN_CONNECT before the first write, or via bpf_setsockopt() in a BPF_SOCK_OPS_TCP_CONNECT_CB program (as samples/bpf/tcp_clamp_kern.c and friends do) - still writes window_clamp and still overrides the route metric, and a state-based check cannot tell that SYN_SENT apart from a post-init one. v3 will instead distinguish a user TCP_WINDOW_CLAMP from an sk_rcvbuf-derived clamp, so tcp_connect_init() and tcp_openreq_init_rwin() apply the route metric whenever the clamp was not set via TCP_WINDOW_CLAMP; the selftest will cover the fastopen and sock_ops paths.
[Medium] Is the part about the case without a route metric accurate?
No, you are correct. With no RTAX_WINDOW metric both the old and the patched kernel end at tcp_full_space() - the old kernel through the "window_clamp > tcp_full_space()" branch, the patched one through "window_clamp == 0" - so the advertised window and wscale are identical and derived from sk_rcvbuf, not from the defaults; the patch changes nothing there. The real impact is only (1) routes with an RTAX_WINDOW metric and (2) a TCP_WINDOW_CLAMP that a later SO_RCVBUF on an unconnected socket or listener overwrites. v3's changelog will say exactly that and drop the "any application" / "without a metric" claims. pw-bot: cr Thanks for the careful review. Shashank