Steven Rostedt (VMware)
ae415fa4c5
ring-buffer: Do no reuse reader page if still in use
...
To free the reader page that is allocated with ring_buffer_alloc_read_page(),
ring_buffer_free_read_page() must be called. For faster performance, this
page can be reused by the ring buffer to avoid having to free and allocate
new pages.
The issue arises when the page is used with a splice pipe into the
networking code. The networking code may up the page counter for the page,
and keep it active while sending it is queued to go to the network. The
incrementing of the page ref does not prevent it from being reused in the
ring buffer, and this can cause the page that is being sent out to the
network to be modified before it is sent by reading new data.
Add a check to the page ref counter, and only reuse the page if it is not
being used anywhere else.
Cc: stable@vger.kernel.org
Fixes: 73a757e631 ("ring-buffer: Return reader page back into existing ring buffer")
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2017-12-27 14:21:09 -05:00
..
blktrace.c
blktrace: fix trace mutex deadlock
2017-11-27 12:03:58 -07:00
bpf_trace.c
bpf: fix corruption on concurrent perf_event_output calls
2017-12-12 09:51:12 -08:00
ftrace.c
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
Kconfig
tracing: make PREEMPTIRQ_EVENTS depend on TRACING
2017-12-04 06:52:09 -05:00
Makefile
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
power-traces.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ring_buffer.c
ring-buffer: Do no reuse reader page if still in use
2017-12-27 14:21:09 -05:00
ring_buffer_benchmark.c
ring-buffer: Have ring_buffer_alloc_read_page() return error on offline CPU
2017-08-02 14:23:02 -04:00
rpm-traces.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace.c
tracing: Remove extra zeroing out of the ring buffer page
2017-12-27 14:20:59 -05:00
trace.h
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
trace_benchmark.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_benchmark.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_branch.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_clock.c
sched/headers: Prepare for new header dependencies before moving code to <linux/sched/clock.h>
2017-03-02 08:42:27 +01:00
trace_entries.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_event_perf.c
perf/ftrace: Small cleanup
2017-10-16 18:13:28 -04:00
trace_events.c
tracing: Reverse the order of trace_types_lock and event_mutex
2017-10-04 11:36:56 -04:00
trace_events_filter.c
mm: treewide: remove GFP_TEMPORARY allocation flag
2017-09-13 18:53:16 -07:00
trace_events_filter_test.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_events_hist.c
tracing: Reimplement log2
2017-10-04 13:10:39 -04:00
trace_events_trigger.c
sched/headers: Prepare to use <linux/rcuupdate.h> instead of <linux/rculist.h> in <linux/sched.h>
2017-03-02 08:42:38 +01:00
trace_export.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_functions.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_functions_graph.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_hwlat.c
trace: make trace_hwlat timestamp y2038 safe
2017-05-08 17:15:15 -07:00
trace_irqsoff.c
tracing: Add support for preempt and irq enable/disable events
2017-10-10 18:58:43 -04:00
trace_kdb.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_kprobe.c
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
trace_mmiotrace.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_nop.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_output.c
sched/debug: Rename task-state printing helpers
2017-10-10 11:43:29 +02:00
trace_output.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_printk.c
tracing: Handle NULL formats in hold_module_trace_bprintk_format()
2016-06-20 09:46:12 -04:00
trace_probe.c
tracing: Make traceprobe parsing code reusable
2017-10-04 13:06:44 -04:00
trace_probe.h
bpf: Revert bpf_overrid_function() helper changes.
2017-11-11 18:24:55 +09:00
trace_sched_switch.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_sched_wakeup.c
Merge branch 'linus' into sched/core, to pick up fixes
2017-11-08 10:17:15 +01:00
trace_selftest.c
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
trace_selftest_dynamic.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_seq.c
tracing: use %*pb[l] to print bitmaps including cpumasks and nodemasks
2015-02-13 21:21:37 -08:00
trace_stack.c
tracing: Have stack trace not record if RCU is not watching
2017-12-14 20:48:22 -05:00
trace_stat.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_stat.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_syscalls.c
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
trace_uprobe.c
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
tracing_map.c
tracing: Remove lookups from tracing_map hitcount
2017-10-04 13:05:42 -04:00
tracing_map.h
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00