Patchwork [3.5.yuz,extended,stable] Patch "ring-buffer: Check for uninitialized cpu buffer before" has been added to staging queue

mail settings
Submitter Herton Ronaldo Krzesinski
Date Nov. 22, 2012, 4:45 a.m.
Message ID <>
Download mbox | patch
Permalink /patch/200935/
State New
Headers show


Herton Ronaldo Krzesinski - Nov. 22, 2012, 4:45 a.m.
This is a note to let you know that I have just added a patch titled

    ring-buffer: Check for uninitialized cpu buffer before

to the linux-3.5.y-queue branch of the 3.5.yuz extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.yuz tree, see



From 6e3a3172e7808e9a0f43ef0d0f2383a085022546 Mon Sep 17 00:00:00 2001
From: Vaibhav Nagarnaik <>
Date: Wed, 10 Oct 2012 16:40:27 -0700
Subject: [PATCH] ring-buffer: Check for uninitialized cpu buffer before

commit 8e49f418c9632790bf456634742d34d97120a784 upstream.

With a system where, num_present_cpus < num_possible_cpus, even if all
CPUs are online, non-present CPUs don't have per_cpu buffers allocated.
If per_cpu/<cpu>/buffer_size_kb is modified for such a CPU, it can cause
a panic due to NULL dereference in ring_buffer_resize().

To fix this, resize operation is allowed only if the per-cpu buffer has
been initialized.


Signed-off-by: Vaibhav Nagarnaik <>
Signed-off-by: Steven Rostedt <>
Signed-off-by: Herton Ronaldo Krzesinski <>
 kernel/trace/ring_buffer.c |    4 ++++
 1 file changed, 4 insertions(+)



diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index f765465..db6dff1 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -1567,6 +1567,10 @@  int ring_buffer_resize(struct ring_buffer *buffer, unsigned long size,

 	} else {
+		/* Make sure this CPU has been intitialized */
+		if (!cpumask_test_cpu(cpu_id, buffer->cpumask))
+			goto out;
 		cpu_buffer = buffer->buffers[cpu_id];

 		if (nr_pages == cpu_buffer->nr_pages)