Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 621968cd authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt
Browse files

tracing: disable buffers and synchronize_sched before resetting



Resetting the ring buffers while traces are happening can corrupt
the ring buffer and disable it (no kernel crash to worry about).

The safest thing to do is disable the ring buffers, call synchronize_sched()
to wait for all current writers to finish and then reset the buffer.

Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent b8de7bd1
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -658,12 +658,20 @@ void tracing_reset(struct trace_array *tr, int cpu)


void tracing_reset_online_cpus(struct trace_array *tr)
void tracing_reset_online_cpus(struct trace_array *tr)
{
{
	struct ring_buffer *buffer = tr->buffer;
	int cpu;
	int cpu;


	ring_buffer_record_disable(buffer);

	/* Make sure all commits have finished */
	synchronize_sched();

	tr->time_start = ftrace_now(tr->cpu);
	tr->time_start = ftrace_now(tr->cpu);


	for_each_online_cpu(cpu)
	for_each_online_cpu(cpu)
		tracing_reset(tr, cpu);
		tracing_reset(tr, cpu);

	ring_buffer_record_enable(buffer);
}
}


void tracing_reset_current(int cpu)
void tracing_reset_current(int cpu)