Commit 92af1abd authored by Ingo Molnar's avatar Ingo Molnar

Merge branch 'tip/perf/core' of...

Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/urgent
parents c4fe52a8 2711ca23
...@@ -1768,6 +1768,14 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer, ...@@ -1768,6 +1768,14 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
* must fill the old tail_page with padding. * must fill the old tail_page with padding.
*/ */
if (tail >= BUF_PAGE_SIZE) { if (tail >= BUF_PAGE_SIZE) {
/*
* If the page was filled, then we still need
* to update the real_end. Reset it to zero
* and the reader will ignore it.
*/
if (tail == BUF_PAGE_SIZE)
tail_page->real_end = 0;
local_sub(length, &tail_page->write); local_sub(length, &tail_page->write);
return; return;
} }
...@@ -3894,12 +3902,12 @@ int ring_buffer_read_page(struct ring_buffer *buffer, ...@@ -3894,12 +3902,12 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
ret = read; ret = read;
cpu_buffer->lost_events = 0; cpu_buffer->lost_events = 0;
commit = local_read(&bpage->commit);
/* /*
* Set a flag in the commit field if we lost events * Set a flag in the commit field if we lost events
*/ */
if (missed_events) { if (missed_events) {
commit = local_read(&bpage->commit);
/* If there is room at the end of the page to save the /* If there is room at the end of the page to save the
* missed events, then record it there. * missed events, then record it there.
*/ */
...@@ -3907,10 +3915,17 @@ int ring_buffer_read_page(struct ring_buffer *buffer, ...@@ -3907,10 +3915,17 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
memcpy(&bpage->data[commit], &missed_events, memcpy(&bpage->data[commit], &missed_events,
sizeof(missed_events)); sizeof(missed_events));
local_add(RB_MISSED_STORED, &bpage->commit); local_add(RB_MISSED_STORED, &bpage->commit);
commit += sizeof(missed_events);
} }
local_add(RB_MISSED_EVENTS, &bpage->commit); local_add(RB_MISSED_EVENTS, &bpage->commit);
} }
/*
* This page may be off to user land. Zero it out here.
*/
if (commit < BUF_PAGE_SIZE)
memset(&bpage->data[commit], 0, BUF_PAGE_SIZE - commit);
out_unlock: out_unlock:
spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags); spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags);
......
...@@ -3661,7 +3661,6 @@ tracing_buffers_read(struct file *filp, char __user *ubuf, ...@@ -3661,7 +3661,6 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct ftrace_buffer_info *info = filp->private_data; struct ftrace_buffer_info *info = filp->private_data;
unsigned int pos;
ssize_t ret; ssize_t ret;
size_t size; size_t size;
...@@ -3688,11 +3687,6 @@ tracing_buffers_read(struct file *filp, char __user *ubuf, ...@@ -3688,11 +3687,6 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
if (ret < 0) if (ret < 0)
return 0; return 0;
pos = ring_buffer_page_len(info->spare);
if (pos < PAGE_SIZE)
memset(info->spare + pos, 0, PAGE_SIZE - pos);
read: read:
size = PAGE_SIZE - info->read; size = PAGE_SIZE - info->read;
if (size > count) if (size > count)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment