All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Toke Høiland-Jørgensen" <toke@redhat.com>
To: Eelco Chaudron <echaudro@redhat.com>
Cc: bpf@vger.kernel.org, davem@davemloft.net, netdev@vger.kernel.org,
	ast@kernel.org, daniel@iogearbox.net, kafai@fb.com,
	songliubraving@fb.com, yhs@fb.com, andriin@fb.com
Subject: Re: [PATCH bpf-next v2] libbpf: Add support for dynamic program attach target
Date: Thu, 13 Feb 2020 18:13:36 +0100	[thread overview]
Message-ID: <87eeuyh0lb.fsf@toke.dk> (raw)
In-Reply-To: <47AD4CC2-4D14-419C-87FC-A86F5B7E0974@redhat.com>

"Eelco Chaudron" <echaudro@redhat.com> writes:

> On 13 Feb 2020, at 16:32, Toke Høiland-Jørgensen wrote:
>
>> Eelco Chaudron <echaudro@redhat.com> writes:
>>
>>> Currently when you want to attach a trace program to a bpf program
>>> the section name needs to match the tracepoint/function semantics.
>>>
>>> However the addition of the bpf_program__set_attach_target() API
>>> allows you to specify the tracepoint/function dynamically.
>>>
>>> The call flow would look something like this:
>>>
>>>   xdp_fd = bpf_prog_get_fd_by_id(id);
>>>   trace_obj = bpf_object__open_file("func.o", NULL);
>>>   prog = bpf_object__find_program_by_title(trace_obj,
>>>                                            "fentry/myfunc");
>>>   bpf_program__set_expected_attach_type(prog, BPF_TRACE_FENTRY);
>>>   bpf_program__set_attach_target(prog, xdp_fd,
>>>                                  "xdpfilt_blk_all");
>>>   bpf_object__load(trace_obj)
>>>
>>> Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
>>
>> Hmm, one question about the attach_prog_fd usage:
>>
>>> +int bpf_program__set_attach_target(struct bpf_program *prog,
>>> +				   int attach_prog_fd,
>>> +				   const char *attach_func_name)
>>> +{
>>> +	int btf_id;
>>> +
>>> +	if (!prog || attach_prog_fd < 0 || !attach_func_name)
>>> +		return -EINVAL;
>>> +
>>> +	if (attach_prog_fd)
>>> +		btf_id = libbpf_find_prog_btf_id(attach_func_name,
>>> +						 attach_prog_fd);
>>> +	else
>>> +		btf_id = __find_vmlinux_btf_id(prog->obj->btf_vmlinux,
>>> +					       attach_func_name,
>>> +					       prog->expected_attach_type);
>>
>> This implies that no one would end up using fd 0 as a legitimate prog
>> fd. This already seems to be the case for the existing code, but is 
>> that
>> really a safe assumption? Couldn't a caller that closes fd 0 (for
>> instance while forking) end up having it reused? Seems like this could
>> result in weird hard-to-debug bugs?
>
>
> Yes, in theory, this can happen but it has nothing to do with this 
> specific patch. The existing code already assumes that attach_prog_fd == 
> 0 means attach to a kernel function :(

Yup, I do realise you're just sticking to the existing behaviour. Seems
even the kernel does that check for fd != 0, so I guess that's ABI now.
Still not sure I believe this will not trip anyone up, though... :/

-Toke


  reply	other threads:[~2020-02-13 17:13 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-13 15:04 [PATCH bpf-next v2] libbpf: Add support for dynamic program attach target Eelco Chaudron
2020-02-13 15:32 ` Toke Høiland-Jørgensen
2020-02-13 17:00   ` Eelco Chaudron
2020-02-13 17:13     ` Toke Høiland-Jørgensen [this message]
2020-02-13 17:13 ` Toke Høiland-Jørgensen
2020-02-13 17:42 ` Andrii Nakryiko
2020-02-14  7:34   ` Eelco Chaudron
2020-02-14 17:53     ` Andrii Nakryiko

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=87eeuyh0lb.fsf@toke.dk \
    --to=toke@redhat.com \
    --cc=andriin@fb.com \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=echaudro@redhat.com \
    --cc=kafai@fb.com \
    --cc=netdev@vger.kernel.org \
    --cc=songliubraving@fb.com \
    --cc=yhs@fb.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.