|
@@ -2383,7 +2383,6 @@ rb_buffer_peek(struct ring_buffer *buffer, int cpu, u64 *ts)
|
|
|
* the box. Return the padding, and we will release
|
|
|
* the current locks, and try again.
|
|
|
*/
|
|
|
- rb_advance_reader(cpu_buffer);
|
|
|
return event;
|
|
|
|
|
|
case RINGBUF_TYPE_TIME_EXTEND:
|
|
@@ -2519,6 +2518,8 @@ ring_buffer_peek(struct ring_buffer *buffer, int cpu, u64 *ts)
|
|
|
if (dolock)
|
|
|
spin_lock(&cpu_buffer->reader_lock);
|
|
|
event = rb_buffer_peek(buffer, cpu, ts);
|
|
|
+ if (event && event->type_len == RINGBUF_TYPE_PADDING)
|
|
|
+ rb_advance_reader(cpu_buffer);
|
|
|
if (dolock)
|
|
|
spin_unlock(&cpu_buffer->reader_lock);
|
|
|
local_irq_restore(flags);
|
|
@@ -2590,12 +2591,9 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts)
|
|
|
spin_lock(&cpu_buffer->reader_lock);
|
|
|
|
|
|
event = rb_buffer_peek(buffer, cpu, ts);
|
|
|
- if (!event)
|
|
|
- goto out_unlock;
|
|
|
-
|
|
|
- rb_advance_reader(cpu_buffer);
|
|
|
+ if (event)
|
|
|
+ rb_advance_reader(cpu_buffer);
|
|
|
|
|
|
- out_unlock:
|
|
|
if (dolock)
|
|
|
spin_unlock(&cpu_buffer->reader_lock);
|
|
|
local_irq_restore(flags);
|