ring-buffer: check for less than two in size allocation
authorSteven Rostedt <srostedt@redhat.com>
Wed, 17 Jun 2009 18:11:10 +0000 (14:11 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 17 Jun 2009 18:16:20 +0000 (14:16 -0400)
The ring buffer must have at least two pages allocated for the
reader page swap to work.

The page count check will miss the case of a zero size passed in.
Even though a zero size ring buffer would probably fail an allocation,
making the min size check for less than two instead of equal to one makes
the code a bit more robust.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/ring_buffer.c

index 162da23..2e99dba 100644 (file)
@@ -657,8 +657,8 @@ struct ring_buffer *__ring_buffer_alloc(unsigned long size, unsigned flags,
        buffer->reader_lock_key = key;
 
        /* need at least two pages */
-       if (buffer->pages == 1)
-               buffer->pages++;
+       if (buffer->pages < 2)
+               buffer->pages = 2;
 
        /*
         * In case of non-hotplug cpu, if the ring-buffer is allocated