tracing/events: don't use wake up for events
authorFrederic Weisbecker <fweisbec@gmail.com>
Sun, 22 Mar 2009 22:10:46 +0000 (23:10 +0100)
committerIngo Molnar <mingo@elte.hu>
Mon, 23 Mar 2009 08:22:14 +0000 (09:22 +0100)
commit07edf7121374609709ef1b0889f6e7b8d6a62ec1
treead1649c9546dc3ce23bb2f8609a7459a7ca2006e
parent9bd7d099ab3f10dd666da399c064999bae427cd9
tracing/events: don't use wake up for events

Impact: fix hard-lockup with sched switch events

Some ftrace events, such as sched wakeup, can be traced
while the runqueue lock is hold. Since they are using
trace_current_buffer_unlock_commit(), they call wake_up()
which can try to grab the runqueue lock too, resulting in
a deadlock.

Now for all event, we call a new helper:
trace_nowake_buffer_unlock_commit() which do pretty the same than
trace_current_buffer_unlock_commit() except than it doesn't call
trace_wake_up().

Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <1237759847-21025-4-git-send-email-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/trace/trace.c
kernel/trace/trace.h
kernel/trace/trace_events_stage_3.h