tracing: kdb: Fix kernel livelock with empty buffers
authorDaniel Thompson <daniel.thompson@linaro.org>
Thu, 6 Nov 2014 12:41:56 +0000 (12:41 +0000)
committerSteven Rostedt <rostedt@goodmis.org>
Fri, 14 Nov 2014 02:27:25 +0000 (21:27 -0500)
commit8520dedbbf7578a397ecdfcf6ab83f775f914cfe
treefd60f0d3d8775a623ad5ac31042cd8ae4ba337c0
parentc270cc75cd22b606c901e606fbb93b002c2a655f
tracing: kdb: Fix kernel livelock with empty buffers

Currently kdb's ftdump command will livelock by constantly printk'ing
the empty string at KERN_EMERG level if it run when the ftrace system is
not in use. This occurs because trace_empty() never returns false when
the ring buffers are left at the start of a non-consuming read [launched
by ring_buffer_read_start()].

This patch changes the loop exit condition to use the result of
trace_find_next_entry_inc(). Effectively this switches the non-consuming
kdb dumper to follow the approach of the non-consuming userspace
interface [s_next()] rather than the consuming ftrace_dump().

Link: http://lkml.kernel.org/r/1415277716-19419-3-git-send-email-daniel.thompson@linaro.org
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Sumit Semwal <sumit.semwal@linaro.org>
Cc: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/trace_kdb.c