Skip to content

Commit

Permalink
ring-buffer: do not swap if recording is disabled
Browse files Browse the repository at this point in the history
If the ring buffer recording has been disabled. Do not let
swapping of ring buffers occur. Simply return -EAGAIN.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Steven Rostedt authored and Ingo Molnar committed Jan 22, 2009
1 parent 5bc4564 commit 97b17ef
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
15 changes: 15 additions & 0 deletions kernel/trace/ring_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -2266,9 +2266,24 @@ int ring_buffer_swap_cpu(struct ring_buffer *buffer_a,
if (buffer_a->pages != buffer_b->pages)
return -EINVAL;

if (ring_buffer_flags != RB_BUFFERS_ON)
return -EAGAIN;

if (atomic_read(&buffer_a->record_disabled))
return -EAGAIN;

if (atomic_read(&buffer_b->record_disabled))
return -EAGAIN;

cpu_buffer_a = buffer_a->buffers[cpu];
cpu_buffer_b = buffer_b->buffers[cpu];

if (atomic_read(&cpu_buffer_a->record_disabled))
return -EAGAIN;

if (atomic_read(&cpu_buffer_b->record_disabled))
return -EAGAIN;

/*
* We can't do a synchronize_sched here because this
* function can be called in atomic context.
Expand Down
2 changes: 1 addition & 1 deletion kernel/trace/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)

ftrace_enable_cpu();

WARN_ON_ONCE(ret);
WARN_ON_ONCE(ret && ret != -EAGAIN);

__update_max_tr(tr, tsk, cpu);
__raw_spin_unlock(&ftrace_max_lock);
Expand Down

0 comments on commit 97b17ef

Please sign in to comment.