All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ringbuffer: synchronize for resizing
@ 2009-11-03 11:42 Lai Jiangshan
  2009-11-03 15:35 ` Steven Rostedt
  2009-11-04 11:09 ` [tip:tracing/urgent] ring-buffer: Synchronize resizing buffer with reader lock tip-bot for Lai Jiangshan
  0 siblings, 2 replies; 3+ messages in thread
From: Lai Jiangshan @ 2009-11-03 11:42 UTC (permalink / raw)
  To: KOSAKI Motohiro, Ingo Molnar, Steven Rostedt, Frederic Weisbecker,
	LKML


We got a sudden panic when we reduced the size of the
ringbuffer.

We can reproduce the panic by the following steps:

echo 1 > events/sched/enable
cat trace_pipe > /dev/null &

while ((1))
do
echo 12000 > buffer_size_kb
echo 512 > buffer_size_kb
done

(not more than 5 seconds, panic ...)

Reported-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
---
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 63446f1..db223fe 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -1196,6 +1196,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
 	atomic_inc(&cpu_buffer->record_disabled);
 	synchronize_sched();
 
+	spin_lock_irq(&cpu_buffer->reader_lock);
 	rb_head_page_deactivate(cpu_buffer);
 
 	for (i = 0; i < nr_pages; i++) {
@@ -1210,6 +1211,7 @@ 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);
 




^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-11-04 11:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-03 11:42 [PATCH] ringbuffer: synchronize for resizing Lai Jiangshan
2009-11-03 15:35 ` Steven Rostedt
2009-11-04 11:09 ` [tip:tracing/urgent] ring-buffer: Synchronize resizing buffer with reader lock tip-bot for Lai Jiangshan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.