For CONFIG_TRACE_BRANCH_PROFILING the likely/unlikely things get
overloaded and generate callouts to this code, and thus also when
AC=1.

Make it safe.

Cc: Steven Rostedt <rost...@goodmis.org>
Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org>
---
 kernel/trace/trace_branch.c |    4 ++++
 1 file changed, 4 insertions(+)

--- a/kernel/trace/trace_branch.c
+++ b/kernel/trace/trace_branch.c
@@ -205,6 +205,8 @@ void trace_likely_condition(struct ftrac
 void ftrace_likely_update(struct ftrace_likely_data *f, int val,
                          int expect, int is_constant)
 {
+       unsigned long flags = user_access_save();
+
        /* A constant is always correct */
        if (is_constant) {
                f->constant++;
@@ -223,6 +225,8 @@ void ftrace_likely_update(struct ftrace_
                f->data.correct++;
        else
                f->data.incorrect++;
+
+       user_access_restore(flags);
 }
 EXPORT_SYMBOL(ftrace_likely_update);
 


Reply via email to