diff options
Diffstat (limited to 'kernel/trace/trace_event_perf.c')
-rw-r--r-- | kernel/trace/trace_event_perf.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c index 5d12bb407b44..4b9c114ee9de 100644 --- a/kernel/trace/trace_event_perf.c +++ b/kernel/trace/trace_event_perf.c | |||
@@ -30,6 +30,18 @@ static int perf_trace_event_perm(struct ftrace_event_call *tp_event, | |||
30 | return ret; | 30 | return ret; |
31 | } | 31 | } |
32 | 32 | ||
33 | /* | ||
34 | * We checked and allowed to create parent, | ||
35 | * allow children without checking. | ||
36 | */ | ||
37 | if (p_event->parent) | ||
38 | return 0; | ||
39 | |||
40 | /* | ||
41 | * It's ok to check current process (owner) permissions in here, | ||
42 | * because code below is called only via perf_event_open syscall. | ||
43 | */ | ||
44 | |||
33 | /* The ftrace function trace is allowed only for root. */ | 45 | /* The ftrace function trace is allowed only for root. */ |
34 | if (ftrace_event_is_function(tp_event)) { | 46 | if (ftrace_event_is_function(tp_event)) { |
35 | if (perf_paranoid_tracepoint_raw() && !capable(CAP_SYS_ADMIN)) | 47 | if (perf_paranoid_tracepoint_raw() && !capable(CAP_SYS_ADMIN)) |