Re: Best way to check for fentry attach support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 12, 2023 at 11:50 AM Martin Kelly
<martin.kelly@xxxxxxxxxxxxxxx> wrote:
>
> Hi all,
>
> I'm trying to figure out the best way to handle the fact that
> fentry/fexit trampolines are not fully supported on all architectures
> and kernel versions. As an example, I want to be able to load an fentry
> if the kernel supports it, and a kprobe otherwise.
>
> It's tempting to use libbpf_probe_bpf_prog_type for this, but on ARM64
> kernels >= 5.5 (when BPF trampolines were introduced) but before the
> most recent ones, loading an fentry program will pass, but attaching it
> will still fail. This also means that libbpf_probe_bpf_prog_type will
> return true even if the program can't be attached, so that can't be used
> to test for attachability.

Right, because libbpf_probe_bpf_prog_type() is testing whether given
program type can be loaded, not attached.

>
> I can work around this by attempting to attach a dummy fentry program in
> my application, but I'm wondering if this is something that should be
> done more generally by libbpf. Some possible ways to do this are:
>
> - Extend the libbpf_probe API to add libbpf_probe_trampoline or similar,
> attempting attach to a known-exported function, such as the BPF syscall,
> or to a user-specified symbol.
>
> - Extend the libbpf_probe API to add a generic libbpf_probe_attach API
> to check if a given function is attachable. However, as attach code is
> different depending on the hook, this might be very complex and require
> a ton of parameters.
>
> - Maybe there are other options that I haven't thought of.
>
> I have a patch I could send for libbpf_probe_trampoline, but I wanted to
> first check if this is a good idea or if it's preferred to simply have
> applications probe this themselves.

It doesn't seem too hard for an application to try to attach and if
attachment fails fallback to attaching kprobe-based program. So I'd
prefer that over much more maintenance burden of keeping this "can
attach" generic API. At least for now.

>
> Thanks,
>
> Martin
>
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux