Files
linux/kernel
Steven Rostedt c087612ab2 tracing: Use same local variable when resetting the ring buffer
commit 283740c619 upstream.

In the ftrace code that resets the ring buffer it references the
buffer with a local variable, but then uses the tr->buffer as the
parameter to reset. If the wakeup tracer is running, which can
switch the tr->buffer with the max saved buffer, this can break
the requirement of disabling the buffer before the reset.

   buffer = tr->buffer;
   ring_buffer_record_disable(buffer);
   synchronize_sched();
   __tracing_reset(tr->buffer, cpu);

If the tr->buffer is swapped, then the reset is not happening to the
buffer that was disabled. This will cause the ring buffer to fail.

Found with Li Zefan's ftrace_stress_test.

Reported-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-04-01 15:58:11 -07:00
..
2009-09-21 14:29:21 +02:00
2009-12-18 14:03:52 -08:00
2009-06-24 00:02:38 -04:00
2010-01-06 15:04:49 -08:00
2010-02-09 04:51:01 -08:00
2009-09-18 09:48:52 -07:00
2009-06-16 19:47:48 -07:00
2009-08-29 14:10:07 +02:00
2009-09-19 13:13:17 -07:00
2009-05-15 07:56:24 -05:00
2009-07-24 10:53:29 +02:00
2009-01-14 18:09:02 +01:00
2009-06-18 13:03:56 -07:00
2009-10-29 08:56:20 +10:30
2009-10-07 08:11:20 +02:00
2009-09-23 07:39:41 -07:00
2009-12-18 14:03:13 -08:00
2009-07-12 14:03:27 -07:00
2009-09-23 18:13:10 -07:00
2009-11-02 16:02:39 +01:00
2009-06-18 13:03:55 -07:00