2008-03-20 14:37:05

by Ingo van Lil

[permalink] [raw]
Subject: [PATCH] Memory corruption in block2mtd.c

Hello everybody,

the block2mtd driver (drivers/mtd/devices/block2mtd.c) will kfree an
on-stack pointer when handling an invalid argument line (e.g.
block2mtd=/dev/loop0,xxx).

The kfree was added some time ago when "name" was dynamically
allocated.

Cheers,
Ingo

Signed-off-by: Ingo van Lil <[email protected]>
---

--- linux-2.6.23.1/drivers/mtd/devices/block2mtd.c.orig 2008-03-20 15:13:49.000000000 +0100
+++ linux-2.6.23.1/drivers/mtd/devices/block2mtd.c 2008-03-20 15:14:09.000000000 +0100
@@ -408,7 +408,6 @@
if (token[1]) {
ret = parse_num(&erase_size, token[1]);
if (ret) {
- kfree(name);
parse_err("illegal erase size");
}
}


2008-03-20 18:34:06

by Jörn Engel

[permalink] [raw]
Subject: Re: [PATCH] Memory corruption in block2mtd.c

On Thu, 20 March 2008 15:36:48 +0100, Ingo van Lil wrote:
>
> the block2mtd driver (drivers/mtd/devices/block2mtd.c) will kfree an
> on-stack pointer when handling an invalid argument line (e.g.
> block2mtd=/dev/loop0,xxx).
>
> The kfree was added some time ago when "name" was dynamically
> allocated.

Good catch.

> Signed-off-by: Ingo van Lil <[email protected]>
Acked-by: Joern Engel <[email protected]>

> ---
>
> --- linux-2.6.23.1/drivers/mtd/devices/block2mtd.c.orig 2008-03-20
> 15:13:49.000000000 +0100
> +++ linux-2.6.23.1/drivers/mtd/devices/block2mtd.c 2008-03-20
> 15:14:09.000000000 +0100
> @@ -408,7 +408,6 @@
> if (token[1]) {
> ret = parse_num(&erase_size, token[1]);
> if (ret) {
> - kfree(name);
> parse_err("illegal erase size");
> }
> }
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

Jörn

--
It is the mark of an educated mind to be able to entertain a thought
without accepting it.
-- Aristotle