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);
*/
struct kfifo *kfifo_alloc(unsigned int size, int gfp_mask, spinlock_t *lock)
{
unsigned int newsize;
unsigned char *buffer;
struct kfifo *ret;
......@@ -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
* wrap' tachnique works only in this case.
*/
newsize = size;
if (size & (size - 1)) {
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)
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