From: Leon Hwang <leon.hwang@linux.dev>
To: sashiko-reviews@lists.linux.dev, bpf@vger.kernel.org
Cc: linux-trace-kernel@vger.kernel.org
Subject: Re: [PATCH bpf-next 5/6] libbpf: Add bpf_link_create_log API
Date: Mon, 19 Oct 2026 00:33:29 +0800 [thread overview]
Message-ID: <a2d2baee-68f1-4f92-ba64-0863621b0882@linux.dev> (raw)
In-Reply-To: <sashiko-outbox-175565@kernel.org>
On 2026/10/17 22:43, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
> - [Medium] libbpf: missing OPTS_VALID() check for log_opts in __bpf_link_create()
> - [Medium] libbpf: bpf_link_create_log added to released LIBBPF_1.8.0 in libbpf.map
> --
>
> commit 5adb04f5088a9ab6aa21d83e4c9370c13ebdaab6
> Author: Leon Hwang <leon.hwang@linux.dev>
>
> libbpf: Add bpf_link_create_log API
>
> This commit introduces the bpf_link_create_log() API to pass struct
> bpf_log_opts when creating BPF links without modifying struct
> bpf_link_create_opts.
>
>> diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c
>> index 17e73e443bc7a..eb127d71f3c83 100644
>> --- a/tools/lib/bpf/bpf.c
>> +++ b/tools/lib/bpf/bpf.c
>> @@ -788,9 +788,10 @@ int bpf_prog_detach2(int prog_fd, int target_fd, enum bpf_attach_type type)
>> return bpf_prog_detach_opts(prog_fd, target_fd, type, NULL);
>> }
>>
>> -int bpf_link_create(int prog_fd, int target_fd,
>> - enum bpf_attach_type attach_type,
>> - const struct bpf_link_create_opts *opts)
>> +static int __bpf_link_create(int prog_fd, int target_fd,
>> + enum bpf_attach_type attach_type,
>> + const struct bpf_link_create_opts *opts,
>> + struct bpf_log_opts *log_opts)
>> {
>> const size_t attr_sz = offsetofend(union bpf_attr, link_create);
>> __u32 target_btf_id, iter_info_len, relative_id;
>> @@ -965,7 +966,7 @@ int bpf_link_create(int prog_fd, int target_fd,
>> break;
>> }
>> proceed:
>> - fd = sys_bpf_fd(BPF_LINK_CREATE, &attr, attr_sz);
>> + fd = __sys_bpf_fd(&attr, attr_sz, BPF_LINK_CREATE, log_opts);
>
> [Severity: Medium]
> Should __bpf_link_create() validate log_opts with OPTS_VALID(log_opts,
> bpf_log_opts) before passing it to __sys_bpf_fd()?
>
> Currently __bpf_link_create() validates opts, but not log_opts:
>
> tools/lib/bpf/bpf.c:__bpf_link_create() {
> if (!OPTS_VALID(opts, bpf_link_create_opts))
> return libbpf_err(-EINVAL);
> }
Will move OPTS_VALID(opts, bpf_link_create_opts) to __sys_bpf_fd() in
the next revision.
>
> When a caller passes a malformed struct bpf_log_opts (such as an invalid sz
> or non-zero unknown trailing fields) to bpf_link_create_log(),
> __bpf_link_create() forwards it directly to __sys_bpf_fd(), which accesses
> log_opts via OPTS_GET() and OPTS_SET() without checking OPTS_VALID().
>
> For comparison, bpf_map_create() validates log_opts before calling
> __sys_bpf_fd():
>
> tools/lib/bpf/bpf.c:bpf_map_create() {
> log_opts = OPTS_GET(opts, log_opts, NULL);
> if (!OPTS_VALID(log_opts, bpf_log_opts))
> return libbpf_err(-EINVAL);
>
> fd = __sys_bpf_fd(&attr, attr_sz, BPF_MAP_CREATE, log_opts);
> }
>
> [ ... ]
>
>> diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map
>> index eeba4072a5dac..990e2f926ecc3 100644
>> --- a/tools/lib/bpf/libbpf.map
>> +++ b/tools/lib/bpf/libbpf.map
>> @@ -458,6 +458,7 @@ LIBBPF_1.7.0 {
>>
>> LIBBPF_1.8.0 {
>> global:
>> + bpf_link_create_log;
>> bpf_map__attach_cgroup_opts;
>> bpf_prog_stream_open;
>> bpf_program__add_flags;
>
> [Severity: Medium]
> Should bpf_link_create_log be placed under the LIBBPF_1.9.0 stanza in
> tools/lib/bpf/libbpf.map instead of LIBBPF_1.8.0?
>
> LIBBPF_1.8.0 is already succeeded by LIBBPF_1.9.0 at the bottom of
> tools/lib/bpf/libbpf.map:
>
> LIBBPF_1.9.0 {
> } LIBBPF_1.8.0;
>
> Adding bpf_link_create_log to LIBBPF_1.8.0 exports the new symbol under the
> previous version node rather than the current LIBBPF_1.9.0 development cycle.
>
Oops. Will move it to the LIBBPF_1.9.0 section.
Thanks,
Leon
next prev parent reply other threads:[~2026-10-18 16:33 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-17 14:26 [PATCH bpf-next 0/6] bpf: Add syscall common attrs support for xdp link_create Leon Hwang
2026-10-17 14:26 ` [PATCH bpf-next 1/6] bpf: Add syscall common attrs support for link_create Leon Hwang
2026-10-17 14:39 ` sashiko-bot
2026-10-18 16:28 ` Leon Hwang
2026-10-17 14:26 ` [PATCH bpf-next 2/6] bpf: Add syscall common attrs support for xdp link_create Leon Hwang
2026-10-17 14:48 ` sashiko-bot
2026-10-18 16:32 ` Leon Hwang
2026-10-17 15:03 ` bot+bpf-ci
2026-10-18 16:30 ` Leon Hwang
2026-10-18 3:28 ` kernel test robot
2026-10-18 16:29 ` Leon Hwang
2026-10-18 3:46 ` kernel test robot
2026-10-18 16:29 ` Leon Hwang
2026-10-17 14:26 ` [PATCH bpf-next 3/6] bpf: Retire tracepoint bpf_xdp_link_attach_failed Leon Hwang
2026-10-17 14:26 ` [PATCH bpf-next 4/6] libbpf: Factor out __bpf_sys_fd helper Leon Hwang
2026-10-17 14:53 ` bot+bpf-ci
2026-10-18 16:32 ` Leon Hwang
2026-10-17 14:26 ` [PATCH bpf-next 5/6] libbpf: Add bpf_link_create_log API Leon Hwang
2026-10-17 14:43 ` sashiko-bot
2026-10-18 16:33 ` Leon Hwang [this message]
2026-10-17 15:03 ` bot+bpf-ci
2026-10-18 16:33 ` Leon Hwang
2026-10-17 14:26 ` [PATCH bpf-next 6/6] selftests/bpf: Add tests to verify link_create logs Leon Hwang
2026-10-17 15:02 ` bot+bpf-ci
2026-10-18 16:33 ` 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=a2d2baee-68f1-4f92-ba64-0863621b0882@linux.dev \
--to=leon.hwang@linux.dev \
--cc=bpf@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=sashiko-reviews@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.