Merge tag 'pm-5.9-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux-2.6-microblaze.git] / kernel / trace / trace_event_perf.c
index a9dfa04..643e0b1 100644 (file)
@@ -8,6 +8,7 @@
 
 #include <linux/module.h>
 #include <linux/kprobes.h>
+#include <linux/security.h>
 #include "trace.h"
 #include "trace_probe.h"
 
@@ -26,8 +27,10 @@ static int   total_ref_count;
 static int perf_trace_event_perm(struct trace_event_call *tp_event,
                                 struct perf_event *p_event)
 {
+       int ret;
+
        if (tp_event->perf_perm) {
-               int ret = tp_event->perf_perm(tp_event, p_event);
+               ret = tp_event->perf_perm(tp_event, p_event);
                if (ret)
                        return ret;
        }
@@ -46,8 +49,9 @@ static int perf_trace_event_perm(struct trace_event_call *tp_event,
 
        /* The ftrace function trace is allowed only for root. */
        if (ftrace_event_is_function(tp_event)) {
-               if (perf_paranoid_tracepoint_raw() && !capable(CAP_SYS_ADMIN))
-                       return -EPERM;
+               ret = perf_allow_tracepoint(&p_event->attr);
+               if (ret)
+                       return ret;
 
                if (!is_sampling_event(p_event))
                        return 0;
@@ -82,8 +86,9 @@ static int perf_trace_event_perm(struct trace_event_call *tp_event,
         * ...otherwise raw tracepoint data can be a severe data leak,
         * only allow root to have these.
         */
-       if (perf_paranoid_tracepoint_raw() && !capable(CAP_SYS_ADMIN))
-               return -EPERM;
+       ret = perf_allow_tracepoint(&p_event->attr);
+       if (ret)
+               return ret;
 
        return 0;
 }