Steven Rostedt
492a74f421
ring-buffer: Check if ring buffer iterator has stale data
...
Usually reads of the ring buffer is performed by a single task.
There are two types of reads from the ring buffer.
One is a consuming read which will consume the entry that was read
and the next read will be the entry that follows.
The other is an iterator that will let the user read the contents of
the ring buffer without modifying it. When an iterator is allocated,
writes to the ring buffer are disabled to protect the iterator.
The problem exists when consuming reads happen while an iterator is
allocated. Specifically, the kind of read that swaps out an entire
page (used by splice) and replaces it with a new read. If the iterator
is on the page that is swapped out, then the next read may read
from this swapped out page and return garbage.
This patch adds a check when reading the iterator to make sure that
the iterator contents are still valid. If a consuming read has taken
place, the iterator is reset.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2010-01-26 16:09:30 -05:00
..
blktrace.c
Add a tracepoint for block request remapping
2009-10-01 21:19:34 +02:00
ftrace.c
ftrace: Fix MATCH_END_ONLY function filter
2010-01-14 22:38:03 -05:00
Kconfig
tracing: Kconfig spelling fixes and cleanups
2009-12-28 10:37:54 +01:00
kmemtrace.c
kmemtrace: Fix up tracer registration
2009-10-01 11:53:44 +02:00
Makefile
Merge branch 'tracing/hw-breakpoints' into perf/core
2009-11-21 14:07:23 +01:00
power-traces.c
tracing/power: Remove two exports
2009-12-13 18:37:28 +01:00
ring_buffer.c
ring-buffer: Check if ring buffer iterator has stale data
2010-01-26 16:09:30 -05:00
ring_buffer_benchmark.c
ring-buffer-benchmark: Add parameters to set produce/consumer priorities
2009-11-25 14:14:15 -05:00
trace.c
tracing: Prevent kernel oops with corrupted buffer
2010-01-25 15:11:53 -05:00
trace.h
Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-16 12:02:25 -08:00
trace_boot.c
tracing: add filter event logic to special, mmiotrace and boot tracers
2009-09-12 23:34:04 -04:00
trace_branch.c
tracing: user local buffer variable for trace branch tracer
2009-10-07 21:53:41 -04:00
trace_clock.c
locking: Convert __raw_spin* functions to arch_spin*
2009-12-14 23:55:32 +01:00
trace_entries.h
hw-breakpoints: Rewrite the hw-breakpoints layer on top of perf events
2009-11-08 15:34:42 +01:00
trace_event_profile.c
tracing: Change event->profile_count to be int type
2009-12-13 18:37:28 +01:00
trace_events.c
tracing: Move a printk out of ftrace_raw_reg_event_foo()
2009-12-13 18:37:25 +01:00
trace_events_filter.c
tracing/filters: Add comment for match callbacks
2010-01-14 22:38:14 -05:00
trace_export.c
tracing: Fix sign fields in ftrace_define_fields_##call()
2009-12-30 10:27:06 -05:00
trace_functions.c
tracing: switch function prints from %pf to %ps
2009-09-17 15:53:40 -04:00
trace_functions_graph.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2009-12-14 09:58:24 -08:00
trace_hw_branches.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2009-12-14 09:58:24 -08:00
trace_irqsoff.c
tracing: Add stack trace to irqsoff tracer
2009-12-11 13:19:51 -05:00
trace_kprobe.c
Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-12-31 11:52:01 -08:00
trace_ksym.c
ksym_tracer: Remove trace_stat
2009-12-30 07:50:50 +01:00
trace_mmiotrace.c
tracing: add filter event logic to special, mmiotrace and boot tracers
2009-09-12 23:34:04 -04:00
trace_nop.c
trace_output.c
tracing: Add full state to trace_seq
2009-12-09 14:05:49 -05:00
trace_output.h
tracing: consolidate code between trace_output.c and trace_function_graph.c
2009-09-11 14:24:13 -04:00
trace_printk.c
tracing: Remove markers
2009-09-18 21:22:08 +02:00
trace_sched_switch.c
tracing: pass around ring buffer instead of tracer
2009-09-04 18:59:39 -04:00
trace_sched_wakeup.c
locking: Convert __raw_spin* functions to arch_spin*
2009-12-14 23:55:32 +01:00
trace_selftest.c
locking: Convert __raw_spin* functions to arch_spin*
2009-12-14 23:55:32 +01:00
trace_selftest_dynamic.c
trace_stack.c
locking: Convert __raw_spin* functions to arch_spin*
2009-12-14 23:55:32 +01:00
trace_stat.c
trace_stat: Fix missing entry in stat file
2009-08-17 11:25:09 +02:00
trace_stat.h
tracing/stat: Add stat_release() callback
2009-07-10 12:14:05 +02:00
trace_syscalls.c
tracing: Move a printk out of ftrace_raw_reg_event_foo()
2009-12-13 18:37:25 +01:00
trace_sysprof.c
perf events, x86/stacktrace: Make stack walking optional
2009-12-17 09:56:19 +01:00
trace_workqueue.c
tracing/workqueues: Add refcnt to struct cpu_workqueue_stats
2009-07-10 12:14:07 +02:00