فهرست منبع

Merge tag 'trace-v4.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace

Pull tracing fixes from Steven Rostedt:
 "Two fixes for the tracing system:

   - When trace_printk() is used with a non constant format descriptor,
     it adds a NULL pointer into the trace format section, and the code
     isn't prepared to deal with it.  This bug appeared by a change that
     was added in v3.5.

   - The ftracetest (selftests section) can't handle testing histograms
     when histograms are not configured.  Currently it shows that they
     fail the test, when they should state that they are unsupported.
     This bug was added in the 4.7 merge window with the addition of the
     historgram code"

* tag 'trace-v4.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  ftracetest: Fix hist unsupported result in hist selftests
  tracing: Handle NULL formats in hold_module_trace_bprintk_format()
Linus Torvalds 9 سال پیش
والد
کامیت
f780f00d72

+ 6 - 1
kernel/trace/trace_printk.c

@@ -36,6 +36,10 @@ struct trace_bprintk_fmt {
 static inline struct trace_bprintk_fmt *lookup_format(const char *fmt)
 static inline struct trace_bprintk_fmt *lookup_format(const char *fmt)
 {
 {
 	struct trace_bprintk_fmt *pos;
 	struct trace_bprintk_fmt *pos;
+
+	if (!fmt)
+		return ERR_PTR(-EINVAL);
+
 	list_for_each_entry(pos, &trace_bprintk_fmt_list, list) {
 	list_for_each_entry(pos, &trace_bprintk_fmt_list, list) {
 		if (!strcmp(pos->fmt, fmt))
 		if (!strcmp(pos->fmt, fmt))
 			return pos;
 			return pos;
@@ -57,7 +61,8 @@ void hold_module_trace_bprintk_format(const char **start, const char **end)
 	for (iter = start; iter < end; iter++) {
 	for (iter = start; iter < end; iter++) {
 		struct trace_bprintk_fmt *tb_fmt = lookup_format(*iter);
 		struct trace_bprintk_fmt *tb_fmt = lookup_format(*iter);
 		if (tb_fmt) {
 		if (tb_fmt) {
-			*iter = tb_fmt->fmt;
+			if (!IS_ERR(tb_fmt))
+				*iter = tb_fmt->fmt;
 			continue;
 			continue;
 		}
 		}
 
 

+ 4 - 5
tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc

@@ -23,15 +23,14 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then
     exit_unsupported
     exit_unsupported
 fi
 fi
 
 
-reset_tracer
-do_reset
-
-FEATURE=`grep hist events/sched/sched_process_fork/trigger`
-if [ -z "$FEATURE" ]; then
+if [ ! -f events/sched/sched_process_fork/hist ]; then
     echo "hist trigger is not supported"
     echo "hist trigger is not supported"
     exit_unsupported
     exit_unsupported
 fi
 fi
 
 
+reset_tracer
+do_reset
+
 echo "Test histogram with execname modifier"
 echo "Test histogram with execname modifier"
 
 
 echo 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger
 echo 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger

+ 4 - 5
tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc

@@ -23,15 +23,14 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then
     exit_unsupported
     exit_unsupported
 fi
 fi
 
 
-reset_tracer
-do_reset
-
-FEATURE=`grep hist events/sched/sched_process_fork/trigger`
-if [ -z "$FEATURE" ]; then
+if [ ! -f events/sched/sched_process_fork/hist ]; then
     echo "hist trigger is not supported"
     echo "hist trigger is not supported"
     exit_unsupported
     exit_unsupported
 fi
 fi
 
 
+reset_tracer
+do_reset
+
 echo "Test histogram basic tigger"
 echo "Test histogram basic tigger"
 
 
 echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger
 echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger

+ 4 - 5
tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc

@@ -23,15 +23,14 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then
     exit_unsupported
     exit_unsupported
 fi
 fi
 
 
-reset_tracer
-do_reset
-
-FEATURE=`grep hist events/sched/sched_process_fork/trigger`
-if [ -z "$FEATURE" ]; then
+if [ ! -f events/sched/sched_process_fork/hist ]; then
     echo "hist trigger is not supported"
     echo "hist trigger is not supported"
     exit_unsupported
     exit_unsupported
 fi
 fi
 
 
+reset_tracer
+do_reset
+
 reset_trigger
 reset_trigger
 
 
 echo "Test histogram multiple tiggers"
 echo "Test histogram multiple tiggers"