提交 8ec8405f 编写于 作者: S Steven Rostedt (VMware)

tracing: Add rcu dereference annotation for test func that touches filter->prog

A boot up test function update_pred_fn() dereferences filter->prog without
the proper rcu annotation.

To do this, we must also take the event_mutex first. Normally, this isn't
needed because this test function can not race with other use cases that
touch the event filters (it is disabled if any events are enabled).
Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
Fixes: 80765597 ("tracing: Rewrite filter logic to be simpler and faster")
Signed-off-by: NSteven Rostedt (VMware) <rostedt@goodmis.org>
上级 1f3b0faa
......@@ -2155,7 +2155,8 @@ static int test_pred_visited_fn(struct filter_pred *pred, void *event)
static void update_pred_fn(struct event_filter *filter, char *fields)
{
struct prog_entry *prog = filter->prog;
struct prog_entry *prog = rcu_dereference_protected(filter->prog,
lockdep_is_held(&event_mutex));
int i;
for (i = 0; prog[i].pred; i++) {
......@@ -2197,6 +2198,8 @@ static __init int ftrace_test_event_filter(void)
break;
}
/* Needed to dereference filter->prog */
mutex_lock(&event_mutex);
/*
* The preemption disabling is not really needed for self
* tests, but the rcu dereference will complain without it.
......@@ -2209,6 +2212,8 @@ static __init int ftrace_test_event_filter(void)
err = filter_match_preds(filter, &d->rec);
preempt_enable();
mutex_unlock(&event_mutex);
__free_filter(filter);
if (test_pred_visited) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册