From: Tao Chen <chen.dylane@gmail.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: Andrii Nakryiko <andrii@kernel.org>,
Eduard Zingerman <eddyz87@gmail.com>,
Daniel Borkmann <daniel@iogearbox.net>,
Martin KaFai Lau <martin.lau@linux.dev>,
Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>,
Stanislav Fomichev <sdf@fomichev.me>, Hao Luo <haoluo@google.com>,
Jiri Olsa <jolsa@kernel.org>,
bpf@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH bpf-next RESEND v2] libbpf: Fix expected_attach_type set when kernel not support
Date: Sat, 14 Sep 2024 22:29:23 +0800 [thread overview]
Message-ID: <159cbaff-e900-4565-a4a6-b59caa84a105@gmail.com> (raw)
In-Reply-To: <CAEf4BzZk4onktrnK-i7CQUrFAPEo24G9p5RZhpg0nrhYxU5EvA@mail.gmail.com>
在 2024/9/14 04:46, Andrii Nakryiko 写道:
> On Fri, Sep 13, 2024 at 9:44 AM Tao Chen <chen.dylane@gmail.com> wrote:
>>
>> The commit "5902da6d8a52" set expected_attach_type again with
>> filed of bpf_program after libpf_prepare_prog_load, which makes
>> expected_attach_type = 0 no sense when kenrel not support the
>> attach_type feature, so fix it.
>>
>> Fixes: 5902da6d8a52 ("libbpf: Add uprobe multi link support to bpf_program__attach_usdt")
>> Suggested-by: Jiri Olsa <jolsa@kernel.org>
>> Signed-off-by: Tao Chen <chen.dylane@gmail.com>
>> ---
>> tools/lib/bpf/libbpf.c | 6 ++----
>> 1 file changed, 2 insertions(+), 4 deletions(-)
>>
>> Change list:
>> - v1 -> v2:
>> - restore the original initialization way suggested by Jiri
>>
>> diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
>> index 219facd0e66e..df2244397ba1 100644
>> --- a/tools/lib/bpf/libbpf.c
>> +++ b/tools/lib/bpf/libbpf.c
>> @@ -7353,7 +7353,7 @@ static int libbpf_prepare_prog_load(struct bpf_program *prog,
>>
>> /* special check for usdt to use uprobe_multi link */
>> if ((def & SEC_USDT) && kernel_supports(prog->obj, FEAT_UPROBE_MULTI_LINK))
>> - prog->expected_attach_type = BPF_TRACE_UPROBE_MULTI;
>> + opts->expected_attach_type = BPF_TRACE_UPROBE_MULTI;
>>
>
> Ok, took me a bit to understand what the issue is. But the above is
> not quite correct, for the above case of setting
> BPF_TRACE_UPROBE_MULTI we do want to record BPF_TRACE_UPROBE_MULTI in
> prog->expected_attach_type, because user might want to query that
> later.
>
> So I agree with the part of the fix below, but here I think we need
> *both* update opts' and prog's expected_attach_type, so we will have:
>
> prog->expected_attach_type = BPF_TRACE_UPROBE_MULTI;
> opts->expected_attach_type = BPF_TRACE_UPROBE_MULTI;
>
> pw-bot: cr
>
>> if ((def & SEC_ATTACH_BTF) && !prog->attach_btf_id) {
>> int btf_obj_fd = 0, btf_type_id = 0, err;
>> @@ -7443,6 +7443,7 @@ static int bpf_object_load_prog(struct bpf_object *obj, struct bpf_program *prog
>> load_attr.attach_btf_id = prog->attach_btf_id;
>> load_attr.kern_version = kern_version;
>> load_attr.prog_ifindex = prog->prog_ifindex;
>> + load_attr.expected_attach_type = prog->expected_attach_type;
>>
>> /* specify func_info/line_info only if kernel supports them */
>> if (obj->btf && btf__fd(obj->btf) >= 0 && kernel_supports(obj, FEAT_BTF_FUNC)) {
>> @@ -7474,9 +7475,6 @@ static int bpf_object_load_prog(struct bpf_object *obj, struct bpf_program *prog
>> insns_cnt = prog->insns_cnt;
>> }
>>
>> - /* allow prog_prepare_load_fn to change expected_attach_type */
>> - load_attr.expected_attach_type = prog->expected_attach_type;
>> -
>> if (obj->gen_loader) {
>> bpf_gen__prog_load(obj->gen_loader, prog->type, prog->name,
>> license, insns, insns_cnt, &load_attr,
>> --
>> 2.25.1
>>
Hi, Andrii, thank you for your reply. I will send v3 as you suggested.
--
Best Regards
Dylane Chen
prev parent reply other threads:[~2024-09-14 14:29 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-13 16:43 [PATCH bpf-next RESEND v2] libbpf: Fix expected_attach_type set when kernel not support Tao Chen
2024-09-13 20:46 ` Andrii Nakryiko
2024-09-14 14:29 ` Tao Chen [this message]
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=159cbaff-e900-4565-a4a6-b59caa84a105@gmail.com \
--to=chen.dylane@gmail.com \
--cc=andrii.nakryiko@gmail.com \
--cc=andrii@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=sdf@fomichev.me \
--cc=song@kernel.org \
--cc=yonghong.song@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.