Steven Rostedt
9366c1ba13
ring-buffer: Fix race between integrity check and readers
...
The function rb_check_pages() was added to make sure the ring buffer's
pages were sane. This check is done when the ring buffer size is modified
as well as when the iterator is released (closing the "trace" file),
as that was considered a non fast path and a good place to do a sanity
check.
The problem is that the check does not have any locks around it.
If one process were to read the trace file, and another were to read
the raw binary file, the check could happen while the reader is reading
the file.
The issues with this is that the check requires to clear the HEAD page
before doing the full check and it restores it afterward. But readers
require the HEAD page to exist before it can read the buffer, otherwise
it gives a nasty warning and disables the buffer.
By adding the reader lock around the check, this keeps the race from
happening.
Cc: stable@vger.kernel.org # 3.6
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2012-11-30 11:09:57 -05:00
..
blktrace.c
simple_open: automatically convert to simple_open()
2012-04-05 15:25:50 -07:00
ftrace.c
ftrace: Clear bits properly in reset_iter_read()
2012-11-15 16:10:17 -05:00
Kconfig
trace: Stop compiling in trace_clock unconditionally
2012-09-13 22:52:08 -04:00
Makefile
trace: Stop compiling in trace_clock unconditionally
2012-09-13 22:52:08 -04:00
power-traces.c
ring_buffer.c
ring-buffer: Fix race between integrity check and readers
2012-11-30 11:09:57 -05:00
ring_buffer_benchmark.c
tracing: Use NUMA allocation for per-cpu ring buffer pages
2011-06-14 22:04:39 -04:00
rpm-traces.c
PM / Runtime: Introduce trace points for tracing rpm_* functions
2011-09-27 22:53:27 +02:00
trace.c
Merge branch 'virtio-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
2012-10-07 21:04:56 +09:00
trace.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2012-10-02 11:11:09 -07:00
trace_branch.c
trace_clock.c
tracing: Add a counter clock for those that do not trust clocks
2011-09-19 11:35:58 -04:00
trace_entries.h
Merge branch 'tip/perf/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/urgent
2012-03-24 08:19:09 +01:00
trace_event_perf.c
perf/core improvements and fixes:
2012-08-21 11:27:00 +02:00
trace_events.c
trace: Move trace event enable from fs_initcall to core_initcall
2012-09-24 14:13:02 -04:00
trace_events_filter.c
tracing/filter: Add missing initialization
2012-08-07 09:42:47 -04:00
trace_events_filter_test.h
tracing/filter: Add startup tests for events filter
2011-08-19 14:35:59 -04:00
trace_export.c
tracing: Do not enable function event with enable
2012-05-10 15:55:43 -04:00
trace_functions.c
1. We no longer ad-hoc to the function tracer "high level" infrastructure
2012-10-07 17:30:50 +09:00
trace_functions_graph.c
ftrace: Do not test frame pointers if -mfentry is used
2012-08-23 11:25:29 -04:00
trace_irqsoff.c
ftrace: Add default recursion protection for function tracing
2012-07-31 10:29:52 -04:00
trace_kdb.c
trace_kprobe.c
perf/trace: Add ability to set a target task for events
2012-07-31 17:02:05 +02:00
trace_mmiotrace.c
atomic: use <linux/atomic.h>
2011-07-26 16:49:47 -07:00
trace_nop.c
trace_output.c
tracing: Register the ftrace internal events during early boot
2012-06-14 15:22:14 -04:00
trace_output.h
trace_printk.c
tracing: Add percpu buffers for trace_printk()
2012-04-23 21:15:55 -04:00
trace_probe.c
tracing: Provide trace events interface for uprobes
2012-05-07 14:30:17 +02:00
trace_probe.h
tracing: Provide trace events interface for uprobes
2012-05-07 14:30:17 +02:00
trace_sched_switch.c
trace_sched_wakeup.c
ftrace: Add default recursion protection for function tracing
2012-07-31 10:29:52 -04:00
trace_selftest.c
tracing: Fix wakeup_rt self test on virtual machines
2012-08-07 09:40:51 -04:00
trace_selftest_dynamic.c
trace_stack.c
ftrace: Add default recursion protection for function tracing
2012-07-31 10:29:52 -04:00
trace_stat.c
trace_stat.h
trace_syscalls.c
trace: Move trace event enable from fs_initcall to core_initcall
2012-09-24 14:13:02 -04:00
trace_uprobe.c
perf/trace: Add ability to set a target task for events
2012-07-31 17:02:05 +02:00