Messages in this thread Patch in this message | | | Date | Thu, 4 Nov 2004 18:06:32 +0100 | From | Martin Waitz <> | Subject | [PATCH] kfifo_alloc buffer |
| |
hi :)
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.
Signed-off-by: Martin Waitz <tali@admingilde.org>
Index: kernel/kfifo.c =================================================================== RCS file: /home/inf3/mnwaitz/src/linux-cvs/linux-2.5/kernel/kfifo.c,v retrieving revision 1.2 diff -u -p -r1.2 kfifo.c --- kernel/kfifo.c 19 Oct 2004 15:12:21 -0000 1.2 +++ kernel/kfifo.c 4 Nov 2004 17:00:34 -0000 @@ -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 s * 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); -- Martin Waitz [unhandled content-type:application/pgp-signature] | |