|
@@ -20,10 +20,12 @@ static void ftrace_dump_buf(int skip_lines, long cpu_file)
|
|
|
{
|
|
|
/* use static because iter can be a bit big for the stack */
|
|
|
static struct trace_iterator iter;
|
|
|
+ static struct ring_buffer_iter *buffer_iter[CONFIG_NR_CPUS];
|
|
|
unsigned int old_userobj;
|
|
|
int cnt = 0, cpu;
|
|
|
|
|
|
trace_init_global_iter(&iter);
|
|
|
+ iter.buffer_iter = buffer_iter;
|
|
|
|
|
|
for_each_tracing_cpu(cpu) {
|
|
|
atomic_inc(&per_cpu_ptr(iter.trace_buffer->data, cpu)->disabled);
|
|
@@ -86,9 +88,12 @@ out:
|
|
|
atomic_dec(&per_cpu_ptr(iter.trace_buffer->data, cpu)->disabled);
|
|
|
}
|
|
|
|
|
|
- for_each_tracing_cpu(cpu)
|
|
|
- if (iter.buffer_iter[cpu])
|
|
|
+ for_each_tracing_cpu(cpu) {
|
|
|
+ if (iter.buffer_iter[cpu]) {
|
|
|
ring_buffer_read_finish(iter.buffer_iter[cpu]);
|
|
|
+ iter.buffer_iter[cpu] = NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*
|