OSDN Git Service

tracing/samples: Fix creation and deletion of simple_thread_fn creation
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 17 Oct 2017 18:55:24 +0000 (14:55 -0400)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 17 Oct 2017 18:55:24 +0000 (14:55 -0400)
commit6575257c60e1a26a5319ccf2b5ce5b6449001017
treeb6404781ed926174017f99758ad84d57a1b19606
parentf39b536ce9248e9799ff900358d6f073ab2e6c55
tracing/samples: Fix creation and deletion of simple_thread_fn creation

Commit 7496946a8 ("tracing: Add samples of DECLARE_EVENT_CLASS() and
DEFINE_EVENT()") added template examples for all the events. It created a
DEFINE_EVENT_FN() example which reused the foo_bar_reg and foo_bar_unreg
functions.

Enabling both the TRACE_EVENT_FN() and DEFINE_EVENT_FN() example trace
events caused the foo_bar_reg to be called twice, creating the test thread
twice. The foo_bar_unreg would remove it only once, even if it was called
multiple times, leaving a thread existing when the module is unloaded,
causing an oops.

Add a ref count and allow foo_bar_reg() and foo_bar_unreg() be called by
multiple trace events.

Cc: stable@vger.kernel.org
Fixes: 7496946a8 ("tracing: Add samples of DECLARE_EVENT_CLASS() and DEFINE_EVENT()")
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
samples/trace_events/trace-events-sample.c