[bpf-next] bpf: allow bpf_perf_event_read_value in all BPF programs
diff mbox series

Message ID 20200214234146.2910011-1-songliubraving@fb.com
State Accepted
Delegated to: BPF Maintainers
Headers show
Series
  • [bpf-next] bpf: allow bpf_perf_event_read_value in all BPF programs
Related show

Commit Message

Song Liu Feb. 14, 2020, 11:41 p.m. UTC
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.

Cc: Yonghong Song <yhs@fb.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
---
 kernel/trace/bpf_trace.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Daniel Borkmann Feb. 18, 2020, 3:09 p.m. UTC | #1
On 2/15/20 12:41 AM, Song Liu wrote:
> 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.
> 
> Cc: Yonghong Song <yhs@fb.com>
> Signed-off-by: Song Liu <songliubraving@fb.com>

And ironically, we had that already for perf_event_read. Applied, thanks!

Patch
diff mbox series

diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index 19e793aa441a..4ddd5ac46094 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -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;