android_kernel_xiaomi_sm8350/kernel/trace
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 tracing: Introduce trace_buffer_{lock_reserve,unlock_commit} 2009-02-06 01:01:41 +01:00
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_boot.c tracing: Introduce trace_buffer_{lock_reserve,unlock_commit} 2009-02-06 01:01:41 +01:00
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_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_events.c tracing: expand the ring buffers when an event is activated 2009-03-11 22:15:24 -04:00
trace_export.c tracing: remove funky whitespace in the trace code 2009-03-10 14:13:14 -04:00
trace_functions_graph.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_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: Call tracing_reset_online_cpus before tracer->init() 2009-02-06 01:01:41 +01:00
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 tracing: convert c/p state power tracer to use tracepoints 2009-02-13 09:06:18 -05:00
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_dynamic.c ftrace: fix dynamic ftrace selftest 2008-05-23 21:13:23 +02:00
trace_selftest.c tracing: use generic __stringify 2009-03-10 00:35:05 -04:00
trace_stack.c trace: better use of stack_trace_enabled for boot up code 2008-12-18 12:56:56 +01:00
trace_stat.c tracing: fix typing mistake in hint message and comments 2009-02-17 12:38:24 -05:00
trace_stat.h tracing/ftrace: separate events tracing and stats tracing engine 2009-01-14 12:11:37 +01:00
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
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