tracing: Fix ent_size in trace output
authorSteven Rostedt <srostedt@redhat.com>
Tue, 27 Mar 2012 14:43:28 +0000 (10:43 -0400)
committerLuis Henriques <luis.henriques@canonical.com>
Mon, 30 Apr 2012 18:15:00 +0000 (19:15 +0100)
commit42e9c49306387f300cc2d55714ff1e7490a1000c
tree8488325f3445d2bada199a2c4f129593352a0af1
parentb1dd5827373091262d4b007b21cf51455516bc8e
tracing: Fix ent_size in trace output

BugLink: http://bugs.launchpad.net/bugs/981162

commit 12b5da349a8b94c9dbc3430a6bc42eabd9eaf50b upstream.

When reading the trace file, the records of each of the per_cpu buffers
are examined to find the next event to print out. At the point of looking
at the event, the size of the event is recorded. But if the first event is
chosen, the other events in the other CPU buffers will reset the event size
that is stored in the iterator descriptor, causing the event size passed to
the output functions to be incorrect.

In most cases this is not a problem, but for the case of stack traces, it
is. With the change to the stack tracing to record a dynamic number of
back traces, the output depends on the size of the entry instead of the
fixed 8 back traces. When the entry size is not correct, the back traces
would not be fully printed.

Note, reading from the per-cpu trace files were not affected.

Reported-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Leann Ogasawara <leann.ogasawara@canonical.com>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
kernel/trace/trace.c