Re: [PATCH bpf-next 0/2] libbpf: support "module:function" syntax for tracing programs

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

 



On 4/26/24 18:54, Andrii Nakryiko wrote:
> On Fri, Apr 26, 2024 at 5:17 AM Viktor Malik <vmalik@xxxxxxxxxx> wrote:
>>
>> In some situations, it is useful to explicitly specify a kernel module
>> to search for a tracing program target (e.g. when a function of the same
>> name exists in multiple modules or in vmlinux).
>>
>> This change enables that by allowing the "module:function" syntax for
>> the find_kernel_btf_id function. Thanks to this, the syntax can be used
>> both from a SEC macro (i.e. `SEC(fentry/module:function)`) and via the
>> bpf_program__set_attach_target API call.
>>
> 
> how about function[module] syntax. This follows how modules are
> reported in kallsyms and a bunch of other kernel-generated files. I've
> been using this syntax in retsnoop for a while, and it feels very
> natural. It's also distinctive enough to be recognizable and parseable
> without any possible confusions.
> 
> Can you please also check if we can/should support this for kprobes as well?

For kprobes, it's a bit more complicated. The legacy kprobe attachment
(via tracefs) supports the "module:function" syntax [1] (which is the
reason I chose that syntax in the first place). On the other hand,
kprobe attachment via the perf_event_open syscall eventually calls
kallsyms_lookup_name for the passed function name which doesn't support
specifying the module at all.

So, to properly support this for kprobes, we'd have to extend
kallsyms_lookup_name to handle the "function[module]" or
"module:function" syntax (here, the former makes more sense).

Since kallsyms_lookup_name is used in many places, I would prefer adding
the kprobe support separately. In any case, the "function[module]"
syntax feels more natural for non-legacy kprobes, so I'm ok with using
it. libbpf will just have to do the transformation to "module:function"
for legacy kprobe attachment.

Let me know if that makes sense and I'll post v2.

Thanks!
Viktor

[1] https://www.kernel.org/doc/Documentation/trace/kprobetrace.rst

> 
>> Viktor Malik (2):
>>   libbpf: support "module:function" syntax for tracing programs
>>   selftests/bpf: add tests for the "module:function" syntax
>>
>>  tools/lib/bpf/libbpf.c                        | 33 ++++++++++++++-----
>>  .../selftests/bpf/prog_tests/module_attach.c  |  6 ++++
>>  .../selftests/bpf/progs/test_module_attach.c  | 23 +++++++++++++
>>  3 files changed, 53 insertions(+), 9 deletions(-)
>>
>> --
>> 2.44.0
>>
> 





[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