]> git.ipfire.org Git - thirdparty/linux.git/commit
tcp: fix mid stream window clamp.
authorPaolo Abeni <pabeni@redhat.com>
Mon, 4 Dec 2023 16:08:05 +0000 (17:08 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 6 Dec 2023 04:07:02 +0000 (20:07 -0800)
commit58d3aade20cdddbac6c9707ac0f3f5f8c1278b74
treecb236954a4b2b7a6db71e238163a273bfc3ae8fb
parentd007caaaf052f82ca2340d4c7b32d04a3f5dbf3f
tcp: fix mid stream window clamp.

After the blamed commit below, if the user-space application performs
window clamping when tp->rcv_wnd is 0, the TCP socket will never be
able to announce a non 0 receive window, even after completely emptying
the receive buffer and re-setting the window clamp to higher values.

Refactor tcp_set_window_clamp() to address the issue: when the user
decreases the current clamp value, set rcv_ssthresh according to the
same logic used at buffer initialization, but ensuring reserved mem
provisioning.

To avoid code duplication factor-out the relevant bits from
tcp_adjust_rcv_ssthresh() in a new helper and reuse it in the above
scenario.

When increasing the clamp value, give the rcv_ssthresh a chance to grow
according to previously implemented heuristic.

Fixes: 3aa7857fe1d7 ("tcp: enable mid stream window clamp")
Reported-by: David Gibson <david@gibson.dropbear.id.au>
Reported-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/705dad54e6e6e9a010e571bf58e0b35a8ae70503.1701706073.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/tcp.h
net/ipv4/tcp.c