43 lines
1.8 KiB
Diff
43 lines
1.8 KiB
Diff
From: Steven Rostedt <rostedt@goodmis.org>
|
|
Date: Tue, 5 Nov 2013 12:51:11 -0500
|
|
Subject: perf/ftrace: Fix paranoid level for enabling function tracer
|
|
Origin: https://git.kernel.org/cgit/linux/kernel/git/rostedt/linux-trace.git/commit?id=d1356abac98cce8e7765186f8093da1442d74d1d
|
|
|
|
The current default perf paranoid level is "1" which has
|
|
"perf_paranoid_kernel()" return false, and giving any operations that
|
|
use it, access to normal users. Unfortunately, this includes function
|
|
tracing and normal users should not be allowed to enable function
|
|
tracing by default.
|
|
|
|
The proper level is defined at "-1" (full perf access), which
|
|
"perf_paranoid_tracepoint_raw()" will only give access to. Use that
|
|
check instead for enabling function tracing.
|
|
|
|
Reported-by: Dave Jones <davej@redhat.com>
|
|
Reported-by: Vince Weaver <vincent.weaver@maine.edu>
|
|
Cc: Peter Zijlstra <peterz@infradead.org>
|
|
Cc: Ingo Molnar <mingo@kernel.org>
|
|
Cc: Jiri Olsa <jolsa@redhat.com>
|
|
Cc: Frederic Weisbecker <fweisbec@gmail.com>
|
|
Cc: stable@vger.kernel.org # 3.4+
|
|
CVE: CVE-2013-2930
|
|
Fixes: ced39002f5ea ("ftrace, perf: Add support to use function tracepoint in perf")
|
|
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
|
|
---
|
|
kernel/trace/trace_event_perf.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c
|
|
index 80c36bc..78e27e3 100644
|
|
--- a/kernel/trace/trace_event_perf.c
|
|
+++ b/kernel/trace/trace_event_perf.c
|
|
@@ -26,7 +26,7 @@ static int perf_trace_event_perm(struct ftrace_event_call *tp_event,
|
|
{
|
|
/* The ftrace function trace is allowed only for root. */
|
|
if (ftrace_event_is_function(tp_event) &&
|
|
- perf_paranoid_kernel() && !capable(CAP_SYS_ADMIN))
|
|
+ perf_paranoid_tracepoint_raw() && !capable(CAP_SYS_ADMIN))
|
|
return -EPERM;
|
|
|
|
/* No tracing, just counting, so no obvious leak */
|