Skip to content

Commit 0eed282

Browse files
namhyungIngo Molnar
authored andcommitted
perf/core: Call perf_prepare_sample() before running BPF
As BPF can access sample data, it needs to populate the data. Also remove the logic to get the callchain specifically as it's covered by the perf_prepare_sample() now. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Tested-by: Jiri Olsa <jolsa@kernel.org> Acked-by: Jiri Olsa <jolsa@kernel.org> Acked-by: Song Liu <song@kernel.org> Acked-by: Peter Zijlstra <peterz@infradead.org> Link: https://lore.kernel.org/r/20230118060559.615653-9-namhyung@kernel.org
1 parent f6e7071 commit 0eed282

File tree

1 file changed

+1
-7
lines changed

1 file changed

+1
-7
lines changed

kernel/events/core.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10356,13 +10356,7 @@ static void bpf_overflow_handler(struct perf_event *event,
1035610356
rcu_read_lock();
1035710357
prog = READ_ONCE(event->prog);
1035810358
if (prog) {
10359-
if (prog->call_get_stack &&
10360-
(event->attr.sample_type & PERF_SAMPLE_CALLCHAIN) &&
10361-
!(data->sample_flags & PERF_SAMPLE_CALLCHAIN)) {
10362-
data->callchain = perf_callchain(event, regs);
10363-
data->sample_flags |= PERF_SAMPLE_CALLCHAIN;
10364-
}
10365-
10359+
perf_prepare_sample(data, event, regs);
1036610360
ret = bpf_prog_run(prog, &ctx);
1036710361
}
1036810362
rcu_read_unlock();

0 commit comments

Comments
 (0)