[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e8aeb1b8-06f0-4eb3-a1ef-26b943d1c6b4@linux.dev>
Date: Wed, 15 Oct 2025 12:00:18 -0700
From: Martin KaFai Lau <martin.lau@...ux.dev>
To: Kuniyuki Iwashima <kuniyu@...gle.com>
Cc: Alexei Starovoitov <ast@...nel.org>, Andrii Nakryiko <andrii@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
John Fastabend <john.fastabend@...il.com>,
Stanislav Fomichev <sdf@...ichev.me>, "David S. Miller"
<davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
Neal Cardwell <ncardwell@...gle.com>, Willem de Bruijn <willemb@...gle.com>,
Mina Almasry <almasrymina@...gle.com>,
Roman Gushchin <roman.gushchin@...ux.dev>,
Shakeel Butt <shakeel.butt@...ux.dev>, Kuniyuki Iwashima
<kuni1840@...il.com>, bpf@...r.kernel.org, netdev@...r.kernel.org
Subject: Re: [PATCH v2 bpf-next/net 5/6] bpf: Introduce
SK_BPF_BYPASS_PROT_MEM.
On 10/14/25 4:54 PM, Kuniyuki Iwashima wrote:
> BPF_CALL_5(bpf_sock_create_getsockopt, struct sock *, sk, int, level,
> int, optname, char *, optval, int, optlen)
> {
> + if (level == SOL_SOCKET && optname == SK_BPF_BYPASS_PROT_MEM)
> + return sk_bpf_set_get_bypass_prot_mem(sk, optval, optlen, true);
The optval (ARG_PTR_TO_UNINIT_MEM) needs to be initialized for error case.
The __bpf_getsockopt below does that but it returns early here.
I changed to this:
if (level == SOL_SOCKET && optname == SK_BPF_BYPASS_PROT_MEM) {
int err = sk_bpf_set_get_bypass_prot_mem(sk, optval, optlen, true);
if (err)
memset(optval, 0, optlen);
return err;
}
> +
> return __bpf_getsockopt(sk, level, optname, optval, optlen);
> }
>
> diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
> index 6829936d33f58..9b17d937edf73 100644
> --- a/tools/include/uapi/linux/bpf.h
> +++ b/tools/include/uapi/linux/bpf.h
> @@ -7200,6 +7200,7 @@ enum {
> TCP_BPF_SYN_MAC = 1007, /* Copy the MAC, IP[46], and TCP header */
> TCP_BPF_SOCK_OPS_CB_FLAGS = 1008, /* Get or Set TCP sock ops flags */
> SK_BPF_CB_FLAGS = 1009, /* Get or set sock ops flags in socket */
> + SK_BPF_BYPASS_PROT_MEM = 1010, /* Get or Set sk->sk_bypass_prot_mem */
> };
>
> enum {
Powered by blists - more mailing lists