Patch "tracing: Fix sample output of dynamic arrays" has been added to the 4.1-stable tree
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
d6726c8145290bef950ae2538ea6ae1d96a1944bMon 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().
--- 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