From: Leon Hwang <leon.hwang@linux.dev>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: bpf <bpf@vger.kernel.org>, Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
John Fastabend <john.fastabend@gmail.com>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Eduard Zingerman <eddyz87@gmail.com>, Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
KP Singh <kpsingh@kernel.org>,
Stanislav Fomichev <sdf@fomichev.me>, Hao Luo <haoluo@google.com>,
Jiri Olsa <jolsa@kernel.org>, Shuah Khan <shuah@kernel.org>,
Christian Brauner <brauner@kernel.org>,
Seth Forshee <sforshee@kernel.org>,
Yuichiro Tsuji <yuichtsu@amazon.com>,
Andrey Albershteyn <aalbersh@redhat.com>,
Willem de Bruijn <willemb@google.com>,
Jason Xing <kerneljasonxing@gmail.com>,
Tao Chen <chen.dylane@linux.dev>,
Mykyta Yatsenko <yatsenko@meta.com>,
Kumar Kartikeya Dwivedi <memxor@gmail.com>,
Anton Protopopov <a.s.protopopov@gmail.com>,
Amery Hung <ameryhung@gmail.com>, Rong Tao <rongtao@cestc.cn>,
LKML <linux-kernel@vger.kernel.org>,
Linux API <linux-api@vger.kernel.org>,
"open list:KERNEL SELFTEST FRAMEWORK"
<linux-kselftest@vger.kernel.org>,
kernel-patches-bot@fb.com
Subject: Re: [PATCH bpf-next v8 4/9] bpf: Add syscall common attributes support for prog_load
Date: Tue, 27 Jan 2026 22:40:41 +0800 [thread overview]
Message-ID: <941cd39c-1358-4823-9fe3-17cffd099eca@linux.dev> (raw)
In-Reply-To: <CAADnVQ+PDCV=YrFhxG3gXPC3jDPdbTmsaAOKBsFceKgEware0Q@mail.gmail.com>
On 2026/1/27 10:43, Alexei Starovoitov wrote:
> ,
>
>
> On Mon, Jan 26, 2026 at 7:15 AM Leon Hwang <leon.hwang@linux.dev> wrote:
>>
>> The log buffer of common attributes would be confusing with the one in
>> 'union bpf_attr' for BPF_PROG_LOAD.
>>
>> In order to clarify the usage of these two log buffers, they both can be
>> used for logging if:
>>
>> * They are same, including 'log_buf', 'log_level' and 'log_size'.
>> * One of them is missing, then another one will be used for logging.
>>
>> If they both have 'log_buf' but they are not same totally, return -EINVAL.
>>
>> Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
>> ---
>> include/linux/bpf_verifier.h | 4 +++-
>> kernel/bpf/log.c | 29 ++++++++++++++++++++++++++---
>> kernel/bpf/syscall.c | 9 ++++++---
>> 3 files changed, 35 insertions(+), 7 deletions(-)
>>
>> diff --git a/include/linux/bpf_verifier.h b/include/linux/bpf_verifier.h
>> index 4a0c5ef296b9..7eb024e83d2d 100644
>> --- a/include/linux/bpf_verifier.h
>> +++ b/include/linux/bpf_verifier.h
>> @@ -637,9 +637,11 @@ struct bpf_log_attr {
>> u32 log_level;
>> struct bpf_attrs *attrs;
>> u32 offsetof_log_true_size;
>> + struct bpf_attrs *attrs_common;
>> };
>>
>> -int bpf_prog_load_log_attr_init(struct bpf_log_attr *log_attr, struct bpf_attrs *attrs);
>> +int bpf_prog_load_log_attr_init(struct bpf_log_attr *log_attr, struct bpf_attrs *attrs,
>> + struct bpf_attrs *attrs_common);
>> int bpf_log_attr_finalize(struct bpf_log_attr *log_attr, struct bpf_verifier_log *log);
>>
>> #define BPF_MAX_SUBPROGS 256
>> diff --git a/kernel/bpf/log.c b/kernel/bpf/log.c
>> index 457b724c4176..c0b816e84384 100644
>> --- a/kernel/bpf/log.c
>> +++ b/kernel/bpf/log.c
>> @@ -865,23 +865,41 @@ void print_insn_state(struct bpf_verifier_env *env, const struct bpf_verifier_st
>> }
>>
>> static int bpf_log_attr_init(struct bpf_log_attr *log_attr, struct bpf_attrs *attrs, u64 log_buf,
>> - u32 log_size, u32 log_level, int offsetof_log_true_size)
>> + u32 log_size, u32 log_level, int offsetof_log_true_size,
>> + struct bpf_attrs *attrs_common)
>> {
>> + const struct bpf_common_attr *common = attrs_common ? attrs_common->attr : NULL;
>> +
>
> It seems the only point of struct bpf_attrs is to pass the attrs
> here and remember them in bpf_log_attr.
> It looks unnecessary. Also the cast to void and back to actual
> type doesn't look pretty.
> It seems all of it is to do two copy_to_bpfptr_offset() of log_true_size
> in different places,
> but libbpf will use only one, so let's do only one
> copy_to_bpfptr_offset() and simply the whole thing.
> struct bpf_log_attr only needs
> u32 offsetof_true_size;
> bpfptr_t uattr;
>
> No need to introduce bpf_attrs and bpf_attrs_init() either.
> When bpf_log_attr is inited make the choice of uattr and offset.
> uattr will point at either new bpf_common_attr or old bpf_attr,
> and offsetof_true_size will have 3 possible offsets.
>
That makes sense.
Then struct bpf_log_attr can be simplified to:
struct bpf_log_attr {
u32 offsetof_true_size;
u32 size;
bpfptr_t uattr;
};
And bpf_log_attr_finalize() would become:
int bpf_log_attr_finalize(struct bpf_log_attr *attr, struct
bpf_verifier_log *log)
{
...
err = bpf_vlog_finalize(log, &log_true_size);
size = sizeof(log_true_size);
if (attr->size >= off + size &&
copy_to_bpfptr_offset(attr->uattr, attr->offsetof_true_size,
&log_true_size, size))
err = -EFAULT;
return err;
}
Thanks,
Leon
next prev parent reply other threads:[~2026-01-27 14:41 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-26 15:14 [PATCH bpf-next v8 0/9] bpf: Extend BPF syscall with common attributes support Leon Hwang
2026-01-26 15:14 ` [PATCH bpf-next v8 1/9] " Leon Hwang
2026-01-26 15:14 ` [PATCH bpf-next v8 2/9] libbpf: Add support for extended bpf syscall Leon Hwang
2026-01-26 15:14 ` [PATCH bpf-next v8 3/9] bpf: Refactor reporting log_true_size for prog_load Leon Hwang
2026-01-26 15:14 ` [PATCH bpf-next v8 4/9] bpf: Add syscall common attributes support " Leon Hwang
2026-01-27 2:43 ` Alexei Starovoitov
2026-01-27 14:40 ` Leon Hwang [this message]
2026-01-26 15:14 ` [PATCH bpf-next v8 5/9] bpf: Refactor reporting btf_log_true_size for btf_load Leon Hwang
2026-01-26 15:14 ` [PATCH bpf-next v8 6/9] bpf: Add syscall common attributes support " Leon Hwang
2026-01-26 15:14 ` [PATCH bpf-next v8 7/9] bpf: Add syscall common attributes support for map_create Leon Hwang
2026-01-26 15:14 ` [PATCH bpf-next v8 8/9] libbpf: Add common attr " Leon Hwang
2026-01-26 15:14 ` [PATCH bpf-next v8 9/9] selftests/bpf: Add tests to verify map create failure log Leon Hwang
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=941cd39c-1358-4823-9fe3-17cffd099eca@linux.dev \
--to=leon.hwang@linux.dev \
--cc=a.s.protopopov@gmail.com \
--cc=aalbersh@redhat.com \
--cc=alexei.starovoitov@gmail.com \
--cc=ameryhung@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=brauner@kernel.org \
--cc=chen.dylane@linux.dev \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kernel-patches-bot@fb.com \
--cc=kerneljasonxing@gmail.com \
--cc=kpsingh@kernel.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=memxor@gmail.com \
--cc=rongtao@cestc.cn \
--cc=sdf@fomichev.me \
--cc=sforshee@kernel.org \
--cc=shuah@kernel.org \
--cc=song@kernel.org \
--cc=willemb@google.com \
--cc=yatsenko@meta.com \
--cc=yonghong.song@linux.dev \
--cc=yuichtsu@amazon.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.