Commit c9e6b4d9 authored by Martin Waitz's avatar Martin Waitz Committed by Linus Torvalds

[PATCH] fix wrong kfifo_init buffer size argument

kfifo_alloc tries to round up the buffer size to the next power of two.

But it accidently uses the original size when calling kfifo_init,
which will BUG.
Acked-by: default avatarStelian Pop <stelian@popies.net>
Signed-off-by: default avatarMartin Waitz <tali@admingilde.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 78e42911
...@@ -66,7 +66,6 @@ EXPORT_SYMBOL(kfifo_init); ...@@ -66,7 +66,6 @@ EXPORT_SYMBOL(kfifo_init);
*/ */
struct kfifo *kfifo_alloc(unsigned int size, int gfp_mask, spinlock_t *lock) struct kfifo *kfifo_alloc(unsigned int size, int gfp_mask, spinlock_t *lock)
{ {
unsigned int newsize;
unsigned char *buffer; unsigned char *buffer;
struct kfifo *ret; struct kfifo *ret;
...@@ -74,13 +73,12 @@ struct kfifo *kfifo_alloc(unsigned int size, int gfp_mask, spinlock_t *lock) ...@@ -74,13 +73,12 @@ struct kfifo *kfifo_alloc(unsigned int size, int gfp_mask, spinlock_t *lock)
* round up to the next power of 2, since our 'let the indices * round up to the next power of 2, since our 'let the indices
* wrap' tachnique works only in this case. * wrap' tachnique works only in this case.
*/ */
newsize = size;
if (size & (size - 1)) { if (size & (size - 1)) {
BUG_ON(size > 0x80000000); BUG_ON(size > 0x80000000);
newsize = roundup_pow_of_two(size); size = roundup_pow_of_two(size);
} }
buffer = kmalloc(newsize, gfp_mask); buffer = kmalloc(size, gfp_mask);
if (!buffer) if (!buffer)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment