tracing: Add preempt disable for filter self test
authorSteven Rostedt <srostedt@redhat.com>
Mon, 22 Aug 2011 13:41:46 +0000 (09:41 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Tue, 30 Aug 2011 16:27:07 +0000 (12:27 -0400)
The self testing for event filters does not really need preemption
disabled as there are no races at the time of testing, but the functions
it calls uses rcu_dereference_sched() which will complain if preemption
is not disabled.

Cc: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/trace_events_filter.c

index 6a642e2782411de6f8d891d4dde7f8df136d21e6..816d3d074979306713836d9447382cb641aecb54 100644 (file)
@@ -2101,6 +2101,11 @@ static __init int ftrace_test_event_filter(void)
                        break;
                }
 
+               /*
+                * The preemption disabling is not really needed for self
+                * tests, but the rcu dereference will complain without it.
+                */
+               preempt_disable();
                if (*d->not_visited)
                        walk_pred_tree(filter->preds, filter->root,
                                       test_walk_pred_cb,
@@ -2108,6 +2113,7 @@ static __init int ftrace_test_event_filter(void)
 
                test_pred_visited = 0;
                err = filter_match_preds(filter, &d->rec);
+               preempt_enable();
 
                __free_filter(filter);