On Tue, Feb 25, 2025 at 09:04:58AM -0800, Andrii Nakryiko wrote: > On Mon, Feb 24, 2025 at 9:44 PM Tao Chen <chen.dylane@xxxxxxxxx> wrote: > > > > 在 2025/2/25 09:15, Andrii Nakryiko 写道: > > > On Mon, Feb 24, 2025 at 9:03 AM Tao Chen <chen.dylane@xxxxxxxxx> wrote: > > >> > > >> Kprobe prog type kfuncs like bpf_session_is_return and > > >> bpf_session_cookie will check the expected_attach_type, > > >> so init the expected_attach_type here. > > >> > > >> Signed-off-by: Tao Chen <chen.dylane@xxxxxxxxx> > > >> --- > > >> tools/lib/bpf/libbpf_probes.c | 1 + > > >> 1 file changed, 1 insertion(+) > > >> > > >> diff --git a/tools/lib/bpf/libbpf_probes.c b/tools/lib/bpf/libbpf_probes.c > > >> index 8efebc18a215..bb5b457ddc80 100644 > > >> --- a/tools/lib/bpf/libbpf_probes.c > > >> +++ b/tools/lib/bpf/libbpf_probes.c > > >> @@ -126,6 +126,7 @@ static int probe_prog_load(enum bpf_prog_type prog_type, > > >> break; > > >> case BPF_PROG_TYPE_KPROBE: > > >> opts.kern_version = get_kernel_version(); > > >> + opts.expected_attach_type = BPF_TRACE_KPROBE_SESSION; > > > > > > so KPROBE_SESSION is relative recent feature, if we unconditionally > > > specify this, we'll regress some feature probes for old kernels where > > > KPROBE_SESSION isn't supported, no? > > > > > > > Yeah, maybe we can detect the kernel version first, will fix it. > > Hold on. I think the entire probing API is kind of unfortunately > inadequate. Just the fact that we randomly pick some specific > expected_attach_type to do helpers/kfunc compatibility detection is > telling. expected_attach_type can change a set of available helpers, > and yet it's not even an input parameter for either > libbpf_probe_bpf_helper() or kfunc variant you are trying to add. could we use the libbpf_probe_bpf_kfunc opts argument and allow to specify and override expected_attach_type? jirka > > Basically, I'm questioning the validity of even adding this API to > libbpf. It feels like this kind of detection is simple enough for > application to do on its own. > > > > > + if (opts.kern_version >= KERNEL_VERSION(6, 12, 0)) > > + opts.expected_attach_type =BPF_TRACE_KPROBE_SESSION; > > no, we shouldn't hard-code kernel version for feature detection (but > also see above, I'm not sure this API should be added in the first > place) > > > > > > pw-bot: cr > > > > > >> break; > > >> case BPF_PROG_TYPE_LIRC_MODE2: > > >> opts.expected_attach_type = BPF_LIRC_MODE2; > > >> -- > > >> 2.43.0 > > >> > > > > > > -- > > Best Regards > > Tao Chen