Skip to contentSkip to conversation

Patch "tracing: Fix sample output of dynamic arrays" has been added to the 4.1-stable tree

PATCH [email protected] 1 participant 1 message Jul 31, 2015 Stable branch

lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

tracing: Fix sample output of dynamic arrays

to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
tracing-fix-sample-output-of-dynamic-arrays.patch
and it can be found in the queue-4.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From d6726c8145290bef950ae2538ea6ae1d96a1944b Mon Sep 17 00:00:00 2001

From: "Steven Rostedt (Red Hat)" <[email protected]>
Date: Fri, 17 Jul 2015 14:03:26 -0400
Subject: tracing: Fix sample output of dynamic arrays

From: "Steven Rostedt (Red Hat)" <[email protected]>

commit d6726c8145290bef950ae2538ea6ae1d96a1944b upstream.

He Kuang noticed that the trace event samples for arrays was broken:

"The output result of trace_foo_bar event in traceevent samples is
wrong. This problem can be reproduced as following:

(Build kernel with SAMPLE_TRACE_EVENTS=m)

  $ insmod trace-events-sample.ko
  $ echo 1 > /sys/kernel/debug/tracing/events/sample-trace/foo_bar/enable
  $ cat /sys/kernel/debug/tracing/trace

event-sample-980 [000] .... 43.649559: foo_bar: foo hello 21 0x15 BIT1|BIT3|0x10 {0x1,0x6f6f6e53,0xff007970,0xffffffff} Snoopy

                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                 The array length is not right, should be {0x1}.

(ffffffff,ffffffff)

event-sample-980 [000] .... 44.653827: foo_bar: foo hello 22 0x16 BIT2|BIT3|0x10 {0x1,0x2,0x646e6147,0x666c61,0xffffffff,0xffffffff,0x750aeffe,0x7} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

                 The array length is not right, should be {0x1,0x2}.

Gandalf (ffffffff,ffffffff)"

This was caused by an update to have __print_array()'s second parameter be the count of items in the array and not the size of the array.

As there is already users of __print_array(), it can not change. But the sample code can and we can also improve on the documentation about __print_array() and __get_dynamic_array_len().

Fixes ac01ce1410fc2 ("tracing: Make ftrace_print_array_seq compute buf_len")
---
 samples/trace_events/trace-events-sample.h |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
samples/trace_events/trace-events-sample.h +5 -2
@@ -168,7 +168,10 @@
  *
  *      For __dynamic_array(int, foo, bar) use __get_dynamic_array(foo)
  *            Use __get_dynamic_array_len(foo) to get the length of the array
- *            saved.
+ *            saved. Note, __get_dynamic_array_len() returns the total allocated
+ *            length of the dynamic array; __print_array() expects the second
+ *            parameter to be the number of elements. To get that, the array length
+ *            needs to be divided by the element size.
  *
  *      For __string(foo, bar) use __get_str(foo)
  *
@@ -288,7 +291,7 @@ TRACE_EVENT(foo_bar,
  *    This prints out the array that is defined by __array in a nice format.
  */
 		  __print_array(__get_dynamic_array(list),
-				__get_dynamic_array_len(list),
+				__get_dynamic_array_len(list) / sizeof(int),
 				sizeof(int)),
 		  __get_str(str), __get_bitmask(cpus))
 );

Patches currently in stable-queue which might be from [email protected] are

queue-4.1/tracing-have-branch-tracer-use-recursive-field-of-task-struct.patch queue-4.1/tracing-fix-sample-output-of-dynamic-arrays.patch queue-4.1/tracing-filter-do-not-allow-infix-to-exceed-end-of-string.patch queue-4.1/tracing-fix-typo-from-static-inlin-to-static-inline.patch queue-4.1/tracing-filter-do-not-warn-on-operand-count-going-below-zero.patch