Re: [PATCH] samples/bpf: Support both enter and exit kprobes in helper

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

 



On Sat, Aug 22, 2020 at 4:30 AM Lior Ribak <liorribak@xxxxxxxxx> wrote:
>
> On 8/15/20 11:02 PM, Yonghong Song wrote:
> >On 8/15/20 12:57 PM, Lior Ribak wrote:
> >> Currently, in bpf_load.c, the function write_kprobe_events sets
> >> the function name to probe as the probe name.
> >> Even though it's valid to set one kprobe on enter and another on exit,
> >> bpf_load.c won't handle it, and will return an error 'File exists'.
> >>
> >> Add a prefix to the event name to indicate if it's on enter or exit,
> >> so both an enter and an exit kprobes can be attached.
>
> >
> >Only bpf_load.c change and no users here. So do you imply that
> >use use this piece code in your own environment some how? But in
> >that case, not sure whether this patch is necessary or not.
> >
> >The change here is for legacy bpf_load which may go away in the future.
> >I understand this is for debugfs based kprobe_events where current
> >libbpf does not support. But if possible, you should upgrade to use
> >fd-based kprobe which is introduced roughly in/around 4.17 and libbpf
> >has proper support.
>
> I used the samples and it's toolchain to write my own bpf, so i wrote this
> patch to save the trouble to the next one who will try to register 2
> kprobes on the same function.
> I still suggest to apply the patch because it solves a bug.
>
> As I see it, all the wrappers around ebpf are duplicated everywhere, and
> fd-based krpobe is already wrapped in the bcc project, so if you suggest
> to switch and use it, maybe it's better to import some of the code from
> bcc instead
>

What Yonghong suggested is to deprecate bpf_load.c completely,
including a legacy way to attach kprobe, which will stay connected
without proper clean up, if the application crashes. This has been a
reason for multiple production problems so far and we've moved away
from that, as a community.

There is no need to import anything from BCC, libbpf already supports
this and much more. samples/bpf unfortunately are a bit outdated (and
any help to bring them more in line with modern libbpf usage would be
greatly appreciated!), the best place to look at better and more
modern examples would be tools/testing/selftests/bpf in Linux repo, or
for more realistic examples of building tracing tools, please check
[0].

  [0] https://github.com/iovisor/bcc/tree/master/libbpf-tools

> >
> >>
> >> Signed-off-by: Lior Ribak <liorribak@xxxxxxxxx>
> >> ---
> >>   samples/bpf/bpf_load.c | 20 +++++++++++++-------
> >>   1 file changed, 13 insertions(+), 7 deletions(-)
> >>

[...]



[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