2004-11-04 17:13:25

by Martin Waitz

[permalink] [raw]
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 <[email protected]>

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


Attachments:
(No filename) (1.16 kB)
(No filename) (189.00 B)
Download all attachments

2004-11-04 19:15:44

by Stelian Pop

[permalink] [raw]
Subject: Re: [PATCH] kfifo_alloc buffer

On Thu, Nov 04, 2004 at 06:06:32PM +0100, Martin Waitz wrote:

> 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.

Good catch, thanks.

Linus, please apply.

Stelian.
--
Stelian Pop <[email protected]>

2004-11-05 08:58:17

by Martin Waitz

[permalink] [raw]
Subject: Re: [PATCH] kfifo_alloc buffer

hoi :)

by the way, shouldn't kernel/kfifo.c be moved over to lib/ ?

--
Martin Waitz


Attachments:
(No filename) (87.00 B)
(No filename) (189.00 B)
Download all attachments