bpf: Separate bpf_get_[stack|stackid] for perf events BPF
authorSong Liu <songliubraving@fb.com>
Thu, 23 Jul 2020 18:06:44 +0000 (11:06 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Sun, 26 Jul 2020 03:16:34 +0000 (20:16 -0700)
commit7b04d6d60fcfb5b2200ffebb9cfb90927bdfeec7
tree21487ebc03582d49dbf8a5f0a8231b93f32c7770
parent909e446b3204642bdb54ab2f225652be89d91268
bpf: Separate bpf_get_[stack|stackid] for perf events BPF

Calling get_perf_callchain() on perf_events from PEBS entries may cause
unwinder errors. To fix this issue, the callchain is fetched early. Such
perf_events are marked with __PERF_SAMPLE_CALLCHAIN_EARLY.

Similarly, calling bpf_get_[stack|stackid] on perf_events from PEBS may
also cause unwinder errors. To fix this, add separate version of these
two helpers, bpf_get_[stack|stackid]_pe. These two hepers use callchain in
bpf_perf_event_data_kern->data->callchain.

Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200723180648.1429892-2-songliubraving@fb.com
include/linux/bpf.h
kernel/bpf/stackmap.c
kernel/trace/bpf_trace.c