All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Abeni <pabeni@redhat.com>
To: Tejas Birajdar <tejasbirajdar@meta.com>,
	Eric Dumazet <edumazet@google.com>
Cc: bpf@vger.kernel.org,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	sashiko-reviews@lists.linux.dev
Subject: Re: [PATCH net-next v3] tcp: honor BPF_SOCK_OPS_RWND_INIT on the active connect path
Date: Thu, 6 Aug 2026 11:15:08 +0200	[thread overview]
Message-ID: <1f36d5be-906a-4ba5-8679-24cbcf899254@redhat.com> (raw)
In-Reply-To: <20260731220124.B0C621F00AC4@smtp.kernel.org>

On 8/1/26 12:01 AM, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> 
> Pre-existing issues:
> - [Medium] The `SOCK_RCVBUF_LOCK` check executes before the BPF program runs and before `full_space` is inflated, silently defeating BPF-requested windows and bypassing dynamic `SO_RCVBUF` adjustments.
> --
> 
> --- Patch [1]: [PATCH net-next v3] tcp: honor BPF_SOCK_OPS_RWND_INIT on the active connect path ---
> commit 2cf5d1d17ae1c7488533ecaa0fcbb83ae4591ec8
> Author: Tejas Birajdar <tejasbirajdar@meta.com>
> 
> tcp: honor BPF_SOCK_OPS_RWND_INIT on the active connect path
> 
> This commit updates tcp_connect_init() to honor the initial TCP receive
> window requested by a BPF_SOCK_OPS_RWND_INIT program on the active connect
> path. It inflates full_space if the program returns a non-zero window,
> matching the listener path's behavior, and uses u64 arithmetic to prevent
> overflows.
> 
> Link: https://lore.kernel.org/netdev/20260723214208.3655474-1-tejasbirajdar@meta.com/
> Link: https://lore.kernel.org/netdev/20260722170033.2763794-1-tejasbirajdar@meta.com/
> 
>> diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
>> index d7c1444b5e304..fcaa04e65189b 100644
>> --- a/net/ipv4/tcp_output.c
>> +++ b/net/ipv4/tcp_output.c
> 
> [ ... ]
> 
>> @@ -4137,10 +4138,13 @@ static void tcp_connect_init(struct sock *sk)
>>  		WRITE_ONCE(tp->window_clamp, tcp_full_space(sk));
>>  
>>  	rcv_wnd = tcp_rwnd_init_bpf(sk);
>> +	full_space = tcp_full_space(sk);
>>  	if (rcv_wnd == 0)
>>  		rcv_wnd = dst_metric(dst, RTAX_INITRWND);
>> +	else if (full_space < (u64)rcv_wnd * tp->advmss)
>> +		full_space = min_t(u64, (u64)rcv_wnd * tp->advmss, INT_MAX);
> 
> [Severity: Medium]
> This is a pre-existing issue, but does the SOCK_RCVBUF_LOCK check happening
> before the BPF program runs defeat the purpose of allowing BPF to adjust
> the receive window?
> 
> If an application sets SO_RCVBUF prior to connect(), SOCK_RCVBUF_LOCK is
> set. In tcp_connect_init(), this caps tp->window_clamp to the old
> tcp_full_space() before tcp_rwnd_init_bpf() is invoked.
> 
> When the BPF program returns a large requested window and full_space is
> inflated, tcp_select_initial_window() bounds space by
> min(window_clamp, space).
> 
> This caps it right back to the pre-BPF full_space and discards the BPF
> request.
> 
> Conversely, if the application did not set SO_RCVBUF but the BPF program
> adjusts it dynamically (which sets SOCK_RCVBUF_LOCK), 

I read the above alike: 'a badly written bpf program could be
ineffective'; not much relevant.

This version LGTM; Eric do you have some comments?

Thanks,

Paolo


  reply	other threads:[~2026-08-06  9:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-30 22:00 [PATCH net-next v3] tcp: honor BPF_SOCK_OPS_RWND_INIT on the active connect path Tejas Birajdar
2026-07-31 22:01 ` sashiko-bot
2026-08-06  9:15   ` Paolo Abeni [this message]
2026-08-06 13:45     ` Eric Dumazet
2026-08-06 19:40 ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1f36d5be-906a-4ba5-8679-24cbcf899254@redhat.com \
    --to=pabeni@redhat.com \
    --cc=bpf@vger.kernel.org \
    --cc=edumazet@google.com \
    --cc=netdev@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=tejasbirajdar@meta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.