From: "Steven Rostedt (Red Hat)"<rostedt@xxxxxxxxxxx>
Commit a82274151af "tracing: Protect ftrace_trace_arrays list in trace_events.c"
added taking the trace_types_lock mutex in trace_events.c as there were
several locations that needed it for protection. Unfortunately, it also
encapsulated a call to tracing_reset_all_online_cpus() which also takes
the trace_types_lock, causing a deadlock.
This happens when a module has tracepoints and has been traced. When the
module is removed, the trace events module notifier will grab the
trace_types_lock, do a bunch of clean ups, and also clears the buffer
by calling tracing_reset_all_online_cpus. This doesn't happen often
which explains why it wasn't caught right away.
Commit a82274151af was marked for stable, which means this must be
sent to stable too.
Link:http://lkml.kernel.org/r/51EEC646.7070306@xxxxxxxxxxxx
Reported-by: Arend van *Spril*<arend@xxxxxxxxxxxx>
Tested-by: Arend van *Spriel*<arend@xxxxxxxxxxxx>
Cc: Alexander Z Lam<azl@xxxxxxxxxx>
Cc: Vaibhav Nagarnaik<vnagarnaik@xxxxxxxxxx>
Cc: David Sharp<dhsharp@xxxxxxxxxx>
Cc:stable@xxxxxxxxxxxxxxx # 3.10
Signed-off-by: Steven Rostedt<rostedt@xxxxxxxxxxx>
---
kernel/trace/trace.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)