Replace per-task counters with per-cpu increments to avoid race
conditions in the branch profiler fast path.

Fixes FIXME about atomicity.

Signed-off-by: Martin Weiss <[email protected]>
---
 kernel/trace/trace_branch.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/trace/trace_branch.c b/kernel/trace/trace_branch.c
index d8e97ad798f0..960bcb3d7dbf 100644
--- a/kernel/trace/trace_branch.c
+++ b/kernel/trace/trace_branch.c
@@ -213,11 +213,11 @@ void ftrace_likely_update(struct ftrace_likely_data *f, 
int val,
         */
        trace_likely_condition(f, val, expect);
 
-       /* FIXME: Make this atomic! */
+       /* use per-cpu counters to avoid contention */
        if (val == expect)
-               f->data.correct++;
+               this_cpu_inc(f->data.correct);
        else
-               f->data.incorrect++;
+               this_cpu_inc(f->data.incorrect);
 
        user_access_restore(flags);
 }
-- 
2.54.0


Reply via email to