mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: tracing: Fix return of trace_dump_stack() ksym_tracer: Fix bad cast tracing/power: Remove two exports tracing: Change event->profile_count to be int type tracing: Simplify trace_option_write() tracing: Remove useless trace option tracing: Use seq file for trace_clock tracing: Use seq file for trace_options function-graph: Allow writing the same val to set_graph_function ftrace: Call trace_parser_clear() properly ftrace: Return EINVAL when writing invalid val to set_ftrace_filter tracing: Move a printk out of ftrace_raw_reg_event_foo() tracing: Pull up calls to trace_define_common_fields() tracing: Extract duplicate ftrace_raw_init_event_foo() ftrace.h: Use common pr_info fmt string tracing: Add stack trace to irqsoff tracer tracing: Add trace_dump_stack() ring-buffer: Move resize integrity check under reader lock ring-buffer: Use sync sched protection on ring buffer resizing tracing: Fix wrong usage of strstrip in trace_ksyms
This commit is contained in:
commit
da184a8064
16 changed files with 203 additions and 282 deletions
|
@ -1193,9 +1193,6 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
|
|||
struct list_head *p;
|
||||
unsigned i;
|
||||
|
||||
atomic_inc(&cpu_buffer->record_disabled);
|
||||
synchronize_sched();
|
||||
|
||||
spin_lock_irq(&cpu_buffer->reader_lock);
|
||||
rb_head_page_deactivate(cpu_buffer);
|
||||
|
||||
|
@ -1211,12 +1208,9 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
|
|||
return;
|
||||
|
||||
rb_reset_cpu(cpu_buffer);
|
||||
spin_unlock_irq(&cpu_buffer->reader_lock);
|
||||
|
||||
rb_check_pages(cpu_buffer);
|
||||
|
||||
atomic_dec(&cpu_buffer->record_disabled);
|
||||
|
||||
spin_unlock_irq(&cpu_buffer->reader_lock);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1227,9 +1221,6 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer,
|
|||
struct list_head *p;
|
||||
unsigned i;
|
||||
|
||||
atomic_inc(&cpu_buffer->record_disabled);
|
||||
synchronize_sched();
|
||||
|
||||
spin_lock_irq(&cpu_buffer->reader_lock);
|
||||
rb_head_page_deactivate(cpu_buffer);
|
||||
|
||||
|
@ -1242,11 +1233,9 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer,
|
|||
list_add_tail(&bpage->list, cpu_buffer->pages);
|
||||
}
|
||||
rb_reset_cpu(cpu_buffer);
|
||||
spin_unlock_irq(&cpu_buffer->reader_lock);
|
||||
|
||||
rb_check_pages(cpu_buffer);
|
||||
|
||||
atomic_dec(&cpu_buffer->record_disabled);
|
||||
spin_unlock_irq(&cpu_buffer->reader_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1254,11 +1243,6 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer,
|
|||
* @buffer: the buffer to resize.
|
||||
* @size: the new size.
|
||||
*
|
||||
* The tracer is responsible for making sure that the buffer is
|
||||
* not being used while changing the size.
|
||||
* Note: We may be able to change the above requirement by using
|
||||
* RCU synchronizations.
|
||||
*
|
||||
* Minimum size is 2 * BUF_PAGE_SIZE.
|
||||
*
|
||||
* Returns -1 on failure.
|
||||
|
@ -1290,6 +1274,11 @@ int ring_buffer_resize(struct ring_buffer *buffer, unsigned long size)
|
|||
if (size == buffer_size)
|
||||
return size;
|
||||
|
||||
atomic_inc(&buffer->record_disabled);
|
||||
|
||||
/* Make sure all writers are done with this buffer. */
|
||||
synchronize_sched();
|
||||
|
||||
mutex_lock(&buffer->mutex);
|
||||
get_online_cpus();
|
||||
|
||||
|
@ -1352,6 +1341,8 @@ int ring_buffer_resize(struct ring_buffer *buffer, unsigned long size)
|
|||
put_online_cpus();
|
||||
mutex_unlock(&buffer->mutex);
|
||||
|
||||
atomic_dec(&buffer->record_disabled);
|
||||
|
||||
return size;
|
||||
|
||||
free_pages:
|
||||
|
@ -1361,6 +1352,7 @@ int ring_buffer_resize(struct ring_buffer *buffer, unsigned long size)
|
|||
}
|
||||
put_online_cpus();
|
||||
mutex_unlock(&buffer->mutex);
|
||||
atomic_dec(&buffer->record_disabled);
|
||||
return -ENOMEM;
|
||||
|
||||
/*
|
||||
|
@ -1370,6 +1362,7 @@ int ring_buffer_resize(struct ring_buffer *buffer, unsigned long size)
|
|||
out_fail:
|
||||
put_online_cpus();
|
||||
mutex_unlock(&buffer->mutex);
|
||||
atomic_dec(&buffer->record_disabled);
|
||||
return -1;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ring_buffer_resize);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue