Message ID | 20221114095733.158588-1-houtao@huaweicloud.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 47df8a2f78bc34ff170d147d05b121f84e252b85 |
Delegated to: | BPF |
Headers | show |
Series | [bpf] perf, bpf: Use subprog name when reporting subprog ksymbol | expand |
On Mon, Nov 14, 2022 at 05:57:33PM +0800, Hou Tao wrote: > From: Hou Tao <houtao1@huawei.com> > > Since commit bfea9a8574f3 ("bpf: Add name to struct bpf_ksym"), when > reporting subprog ksymbol to perf, prog name instead of subprog name is > used. The backtrace of bpf program with subprogs will be incorrect as > shown below: > > ffffffffc02deace bpf_prog_e44a3057dcb151f8_overwrite+0x66 > ffffffffc02de9f7 bpf_prog_e44a3057dcb151f8_overwrite+0x9f > ffffffffa71d8d4e trace_call_bpf+0xce > ffffffffa71c2938 perf_call_bpf_enter.isra.0+0x48 > > overwrite is the entry program and it invokes the overwrite_htab subprog > through bpf_loop, but in above backtrace, overwrite program just jumps > inside itself. > > Fixing it by using subprog name when reporting subprog ksymbol. After > the fix, the output of perf script will be correct as shown below: > > ffffffffc031aad2 bpf_prog_37c0bec7d7c764a4_overwrite_htab+0x66 > ffffffffc031a9e7 bpf_prog_c7eb827ef4f23e71_overwrite+0x9f > ffffffffa3dd8d4e trace_call_bpf+0xce > ffffffffa3dc2938 perf_call_bpf_enter.isra.0+0x48 > > Fixes: bfea9a8574f3 ("bpf: Add name to struct bpf_ksym") > Signed-off-by: Hou Tao <houtao1@huawei.com> Acked-by: Jiri Olsa <jolsa@kernel.org> thanks, jirka > --- > kernel/events/core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/events/core.c b/kernel/events/core.c > index 4ec3717003d5..8b50ef2569d9 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -9030,7 +9030,7 @@ static void perf_event_bpf_emit_ksymbols(struct bpf_prog *prog, > PERF_RECORD_KSYMBOL_TYPE_BPF, > (u64)(unsigned long)subprog->bpf_func, > subprog->jited_len, unregister, > - prog->aux->ksym.name); > + subprog->aux->ksym.name); > } > } > } > -- > 2.29.2 >
Hello: This patch was applied to bpf/bpf.git (master) by Daniel Borkmann <daniel@iogearbox.net>: On Mon, 14 Nov 2022 17:57:33 +0800 you wrote: > From: Hou Tao <houtao1@huawei.com> > > Since commit bfea9a8574f3 ("bpf: Add name to struct bpf_ksym"), when > reporting subprog ksymbol to perf, prog name instead of subprog name is > used. The backtrace of bpf program with subprogs will be incorrect as > shown below: > > [...] Here is the summary with links: - [bpf] perf, bpf: Use subprog name when reporting subprog ksymbol https://git.kernel.org/bpf/bpf/c/47df8a2f78bc You are awesome, thank you!
diff --git a/kernel/events/core.c b/kernel/events/core.c index 4ec3717003d5..8b50ef2569d9 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -9030,7 +9030,7 @@ static void perf_event_bpf_emit_ksymbols(struct bpf_prog *prog, PERF_RECORD_KSYMBOL_TYPE_BPF, (u64)(unsigned long)subprog->bpf_func, subprog->jited_len, unregister, - prog->aux->ksym.name); + subprog->aux->ksym.name); } } }