bpf: Allow bpf_perf_event_read_value in all BPF programs
authorSong Liu <songliubraving@fb.com>
Fri, 14 Feb 2020 23:41:46 +0000 (15:41 -0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 18 Feb 2020 15:08:27 +0000 (16:08 +0100)
bpf_perf_event_read_value() is NMI safe. Enable it for all BPF programs.
This can be used in fentry/fexit to profile BPF program and individual
kernel function with hardware counters.

Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20200214234146.2910011-1-songliubraving@fb.com
kernel/trace/bpf_trace.c

index 19e793a..4ddd5ac 100644 (file)
@@ -843,6 +843,8 @@ tracing_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
                return &bpf_send_signal_proto;
        case BPF_FUNC_send_signal_thread:
                return &bpf_send_signal_thread_proto;
+       case BPF_FUNC_perf_event_read_value:
+               return &bpf_perf_event_read_value_proto;
        default:
                return NULL;
        }
@@ -858,8 +860,6 @@ kprobe_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
                return &bpf_get_stackid_proto;
        case BPF_FUNC_get_stack:
                return &bpf_get_stack_proto;
-       case BPF_FUNC_perf_event_read_value:
-               return &bpf_perf_event_read_value_proto;
 #ifdef CONFIG_BPF_KPROBE_OVERRIDE
        case BPF_FUNC_override_return:
                return &bpf_override_return_proto;