Steven Rostedt
9aba60fe6e
tracing: fix trace_wait to know to wait on all cpus or just one
...
Impact: fix to task live locking on reading trace_pipe on one CPU
The same code is used for both trace_pipe (all CPUS) and the per_cpu
trace_pipe file. When there is no data to read, it will check for
signals and wait on the trace wait queue.
The problem happens with the per_cpu wait. The trace_wait code checks
all CPUs. Thus, if there's data in another CPU buffer, then it will
exit the wait, without checking for signals or waiting on the wait queue.
It would then try to read the empty buffer, and since that will just
return nothing, then it will try to wait again. Unfortunately, that will
again fail due to there still being data in the other buffers. This
ends up with a live lock for the task.
This patch fixes the trace_wait to be aware that the iterator may only
be waiting on a single buffer.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
2009-03-11 22:15:25 -04:00
..
blktrace.c
tracing: remove funky whitespace in the trace code
2009-03-10 14:13:14 -04:00
events.c
tracing: use generic __stringify
2009-03-10 00:35:05 -04:00
ftrace.c
tracing: fix deadlock when setting set_ftrace_pid
2009-03-06 12:07:38 +01:00
Kconfig
tracing/core: drop the old trace_printk() implementation in favour of trace_bprintk()
2009-03-06 17:59:12 +01:00
kmemtrace.c
Makefile
tracing/core: drop the old trace_printk() implementation in favour of trace_bprintk()
2009-03-06 17:59:12 +01:00
ring_buffer.c
tracing: make all file_operations const
2009-03-05 21:46:40 -05:00
trace.c
tracing: fix trace_wait to know to wait on all cpus or just one
2009-03-11 22:15:25 -04:00
trace.h
tracing: expand the ring buffers when an event is activated
2009-03-11 22:15:24 -04:00
trace_boot.c
trace_branch.c
tracing: remove funky whitespace in the trace code
2009-03-10 14:13:14 -04:00
trace_clock.c
tracing: implement trace_clock_*() APIs
2009-02-26 18:44:06 +01:00
trace_event_types.h
tracing: new format for specialized trace points
2009-03-10 00:35:07 -04:00
trace_events.c
tracing: expand the ring buffers when an event is activated
2009-03-11 22:15:24 -04:00
trace_events_stage_1.h
tracing: update comments to match event code macros
2009-03-10 13:12:58 -04:00
trace_events_stage_2.h
tracing: update comments to match event code macros
2009-03-10 13:12:58 -04:00
trace_events_stage_3.h
tracing: remove funky whitespace in the trace code
2009-03-10 14:13:14 -04:00
trace_export.c
tracing: remove funky whitespace in the trace code
2009-03-10 14:13:14 -04:00
trace_functions.c
tracing/core: use appropriate waiting on trace_pipe
2009-02-18 01:40:20 +01:00
trace_functions_graph.c
tracing: remove funky whitespace in the trace code
2009-03-10 14:13:14 -04:00
trace_hw_branches.c
tracing/hw-branch-tracing: convert bts-tracer mutex to a spinlock
2009-02-25 09:16:01 +01:00
trace_irqsoff.c
tracing: have latency tracers set the latency format
2009-03-04 22:15:30 -05:00
trace_mmiotrace.c
tracing/core: drop the old trace_printk() implementation in favour of trace_bprintk()
2009-03-06 17:59:12 +01:00
trace_nop.c
trace_output.c
tracing: remove funky whitespace in the trace code
2009-03-10 14:13:14 -04:00
trace_output.h
tracing/core: drop the old trace_printk() implementation in favour of trace_bprintk()
2009-03-06 17:59:12 +01:00
trace_power.c
trace_printk.c
tracing/core: drop the old trace_printk() implementation in favour of trace_bprintk()
2009-03-06 17:59:12 +01:00
trace_sched_switch.c
tracing/core: use appropriate waiting on trace_pipe
2009-02-18 01:40:20 +01:00
trace_sched_wakeup.c
tracing: have latency tracers set the latency format
2009-03-04 22:15:30 -05:00
trace_selftest.c
tracing: use generic __stringify
2009-03-10 00:35:05 -04:00
trace_selftest_dynamic.c
trace_stack.c
trace_stat.c
tracing: fix typing mistake in hint message and comments
2009-02-17 12:38:24 -05:00
trace_stat.h
trace_sysprof.c
tracing: make all file_operations const
2009-03-05 21:46:40 -05:00
trace_workqueue.c
tracing: remove funky whitespace in the trace code
2009-03-10 14:13:14 -04:00