eunomia-bpf / bpftime

Userspace eBPF runtime for Observability, Network & General Extensions Framework
https://eunomia.dev/bpftime/
MIT License
824 stars 77 forks source link

[Question] The type of uprobe does not match kernel #313

Open janetat opened 3 months ago

janetat commented 3 months ago

问题

当劫持的是BPF_PROG_LOAD时,为什么uprobe/uretprobe -> BPF_PROG_TYPE_SOCKET_FILTER?

假如使用的是bpf_prog_attach_uprobe_with_override去挂载程序(error_inject.c)。

Officeyutong commented 3 months ago

kernel uses BPF_PROG_TYPE_SOCKET_FILTER as program type of uprobe/uretprobe programs, so do us. Program type is not the same things as attach type.

janetat commented 3 months ago

But link says uprobe/uretprobe program is BPF_PROG_TYPE_KPROBE

janetat commented 3 months ago

BTW, After error_inject_bpf__open(), I print out the program type:

    # The bpf_prog_type is 2, BPF_PROG_TYPE_KPROBE
    fprintf(stderr, "!!!!!1: %d\n", skel->progs.do_error_inject_patch->type);
    fprintf(stderr, "!!!!!2: %s\n", skel->progs.do_error_inject_patch->name);
yunwei37 commented 3 months ago

The key problem is that bpf_prog_attach_uprobe_with_override is not supported by kernel.

It's a self-define type only in bpftime, so we choose a type for that. Maybe we should choose a new one....