浏览代码

tracing: Account for variables in named trigger compatibility

Named triggers must also have the same set of variables in order to be
considered compatible - update the trigger match test to account for
that.

The reason for this requirement is that named triggers with variables
are meant to allow one or more events to set the same variable.

Link: http://lkml.kernel.org/r/a17eae6328a99917f9d5c66129c9fcd355279ee9.1516069914.git.tom.zanussi@linux.intel.com

Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Tom Zanussi 7 年之前
父节点
当前提交
1a361dfcf2
共有 1 个文件被更改,包括 6 次插入1 次删除
  1. 6 1
      kernel/trace/trace_events_hist.c

+ 6 - 1
kernel/trace/trace_events_hist.c

@@ -1610,7 +1610,7 @@ static int event_hist_trigger_print(struct seq_file *m,
 		sort_key = &hist_data->sort_keys[i];
 		sort_key = &hist_data->sort_keys[i];
 		idx = sort_key->field_idx;
 		idx = sort_key->field_idx;
 
 
-		if (WARN_ON(idx >= TRACING_MAP_FIELDS_MAX))
+		if (WARN_ON(idx >= HIST_FIELDS_MAX))
 			return -EINVAL;
 			return -EINVAL;
 
 
 		if (i > 0)
 		if (i > 0)
@@ -1798,6 +1798,11 @@ static bool hist_trigger_match(struct event_trigger_data *data,
 			return false;
 			return false;
 		if (key_field->is_signed != key_field_test->is_signed)
 		if (key_field->is_signed != key_field_test->is_signed)
 			return false;
 			return false;
+		if (!!key_field->var.name != !!key_field_test->var.name)
+			return false;
+		if (key_field->var.name &&
+		    strcmp(key_field->var.name, key_field_test->var.name) != 0)
+			return false;
 	}
 	}
 
 
 	for (i = 0; i < hist_data->n_sort_keys; i++) {
 	for (i = 0; i < hist_data->n_sort_keys; i++) {