On Tue, Feb 22, 2022 at 9:06 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > > Adding support to call bpf_get_func_ip helper from kprobe > programs attached by multi kprobe link. > > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > --- LGTM. Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > kernel/trace/bpf_trace.c | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c > index df3771bfd6e5..64891b7b0885 100644 > --- a/kernel/trace/bpf_trace.c > +++ b/kernel/trace/bpf_trace.c > @@ -1037,6 +1037,18 @@ static const struct bpf_func_proto bpf_get_func_ip_proto_kprobe = { > .arg1_type = ARG_PTR_TO_CTX, > }; > > +BPF_CALL_1(bpf_get_func_ip_kprobe_multi, struct pt_regs *, regs) > +{ > + return instruction_pointer(regs); > +} > + > +static const struct bpf_func_proto bpf_get_func_ip_proto_kprobe_multi = { > + .func = bpf_get_func_ip_kprobe_multi, > + .gpl_only = false, > + .ret_type = RET_INTEGER, > + .arg1_type = ARG_PTR_TO_CTX, > +}; > + > BPF_CALL_1(bpf_get_attach_cookie_trace, void *, ctx) > { > struct bpf_trace_run_ctx *run_ctx; > @@ -1280,7 +1292,9 @@ kprobe_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) > return &bpf_override_return_proto; > #endif > case BPF_FUNC_get_func_ip: > - return &bpf_get_func_ip_proto_kprobe; > + return prog->expected_attach_type == BPF_TRACE_KPROBE_MULTI ? > + &bpf_get_func_ip_proto_kprobe_multi : > + &bpf_get_func_ip_proto_kprobe; > case BPF_FUNC_get_attach_cookie: > return &bpf_get_attach_cookie_proto_trace; > default: > -- > 2.35.1 >