From: sashiko-bot@kernel.org
To: "Kuniyuki Iwashima" <kuniyu@google.com>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH v1 bpf-next 7/8] bpf: tcp: Add SOCK_OPS rcvlowat hook.
Date: Fri, 08 May 2026 21:46:34 +0000 [thread overview]
Message-ID: <20260508214634.A0ABBC2BCB0@smtp.kernel.org> (raw)
In-Reply-To: <20260508073355.3916746-8-kuniyu@google.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The new BPF_SOCK_OPS_RCVLOWAT_CB hook is incorrectly rejected by is_locked_tcp_sock_ops(), preventing the BPF program from modifying callback flags.
--
commit ef96e613bd920ae4e567781955c5e3d4f11f7f57
Author: Kuniyuki Iwashima <kuniyu@google.com>
bpf: tcp: Add SOCK_OPS rcvlowat hook.
This commit introduces a new BPF_SOCK_OPS_RCVLOWAT_CB hook that is invoked
when TCP enqueues an skb or completes recvmsg(). The hook allows BPF
programs to dynamically adjust sk->sk_rcvlowat to suppress unnecessary
wakeups.
[ ... ]
> diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
> index 7e26503fd96d4..a70a8f5830258 100644
> --- a/net/ipv4/tcp_input.c
> +++ b/net/ipv4/tcp_input.c
> @@ -204,6 +204,12 @@ static void bpf_skops_established(struct sock *sk, int bpf_op,
> /* sk with TCP_REPAIR_ON does not have skb in tcp_finish_connect */
> bpf_skops_common_locked(sk, bpf_op, skb, skb ? tcp_hdrlen(skb) : 0);
> }
> +
> +void bpf_skops_rcvlowat(struct sock *sk, struct sk_buff *skb)
> +{
> + /* skb is NULL when called from __tcp_cleanup_rbuf(). */
> + bpf_skops_common_locked(sk, BPF_SOCK_OPS_RCVLOWAT_CB, skb, 0);
> +}
Does this regression prevent the BPF program from dynamically disabling the
hook once the RPC boundaries are known?
Since BPF_SOCK_OPS_RCVLOWAT_CB is greater than BPF_SOCK_OPS_WRITE_HDR_OPT_CB,
is_locked_tcp_sock_ops() will return false for this hook:
net/core/filter.c:is_locked_tcp_sock_ops() {
return bpf_sock->op <= BPF_SOCK_OPS_WRITE_HDR_OPT_CB;
}
While this intentionally prevents bpf_setsockopt() from being used
unnecessarily, bpf_sock_ops_cb_flags_set() also relies on this check:
net/core/filter.c:bpf_sock_ops_cb_flags_set() {
if (!is_locked_tcp_sock_ops(bpf_sock))
return -EOPNOTSUPP;
...
}
This means any attempt to clear the callback flag using
bpf_sock_ops_cb_flags_set() within the hook will fail with -EOPNOTSUPP.
This could force the callback to run on every single SKB enqueue for the
lifetime of the connection.
Should is_locked_tcp_sock_ops() or bpf_sock_ops_cb_flags_set() be updated
to allow disabling the callback flag for this new hook?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260508073355.3916746-1-kuniyu@google.com?part=7
next prev parent reply other threads:[~2026-05-08 21:46 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-08 7:33 [PATCH v1 bpf-next 0/8] bpf: Add SOCK_OPS hooks for TCP AutoLOWAT Kuniyuki Iwashima
2026-05-08 7:33 ` [PATCH v1 bpf-next 1/8] selftest: bpf: Use BPF_SOCK_OPS_ALL_CB_FLAGS + 1 for bad_cb_test_rv Kuniyuki Iwashima
2026-05-08 19:02 ` sashiko-bot
2026-05-08 20:21 ` Kuniyuki Iwashima
2026-05-08 7:33 ` [PATCH v1 bpf-next 2/8] bpf: tcp: Introduce BPF_SOCK_OPS_RCVLOWAT_CB Kuniyuki Iwashima
2026-05-08 19:17 ` sashiko-bot
2026-05-08 20:26 ` Kuniyuki Iwashima
2026-05-08 7:33 ` [PATCH v1 bpf-next 3/8] bpf: tcp: Support bpf_skb_load_bytes() for BPF_SOCK_OPS_RCVLOWAT_CB Kuniyuki Iwashima
2026-05-08 15:15 ` Stanislav Fomichev
2026-05-08 19:45 ` Kuniyuki Iwashima
2026-05-11 14:56 ` Stanislav Fomichev
2026-05-08 7:33 ` [PATCH v1 bpf-next 4/8] tcp: Split out __tcp_set_rcvlowat() Kuniyuki Iwashima
2026-05-08 7:33 ` [PATCH v1 bpf-next 5/8] bpf: tcp: Add kfunc to adjust sk->sk_rcvlowat Kuniyuki Iwashima
2026-05-11 12:34 ` Björn Töpel
2026-05-17 23:28 ` Kuniyuki Iwashima
2026-05-08 7:33 ` [PATCH v1 bpf-next 6/8] bpf: tcp: Factorise bpf_skops_established() Kuniyuki Iwashima
2026-05-08 7:33 ` [PATCH v1 bpf-next 7/8] bpf: tcp: Add SOCK_OPS rcvlowat hook Kuniyuki Iwashima
2026-05-08 10:37 ` Jiayuan Chen
2026-05-08 11:30 ` Kuniyuki Iwashima
2026-05-08 12:19 ` Jiayuan Chen
2026-05-08 15:28 ` Stanislav Fomichev
2026-05-08 20:05 ` Kuniyuki Iwashima
2026-05-11 14:55 ` Stanislav Fomichev
2026-05-08 21:46 ` sashiko-bot [this message]
2026-05-08 7:33 ` [PATCH v1 bpf-next 8/8] selftest: bpf: Add test for BPF_SOCK_OPS_RCVLOWAT_CB Kuniyuki Iwashima
2026-05-08 15:35 ` Stanislav Fomichev
2026-05-08 20:19 ` Kuniyuki Iwashima
2026-05-08 21:47 ` Stanislav Fomichev
2026-05-08 21:58 ` Kuniyuki Iwashima
2026-05-08 22:17 ` sashiko-bot
2026-05-08 22:47 ` Kuniyuki Iwashima
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=20260508214634.A0ABBC2BCB0@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=kuniyu@google.com \
--cc=sashiko@lists.linux.dev \
/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.