Messages in this thread Patch in this message | | | From | Jesper Juhl <> | Subject | [PATCH] mtd: fix memory leak in block2mtd_setup() | Date | Sun, 14 May 2006 01:42:25 +0200 |
| |
There's a mem leak in drivers/mtd/devices/block2mtd.c::block2mtd_setup()
We can leak 'name' allocated with kmalloc in 'parse_name' if leave via the 'parse_err' macro since it contains a return but doesn't do any freeing.
Spotted by coverity checker as bug 615.
Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com> ---
drivers/mtd/devices/block2mtd.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
--- linux-2.6.17-rc4-git2-orig/drivers/mtd/devices/block2mtd.c 2006-05-13 21:28:27.000000000 +0200 +++ linux-2.6.17-rc4-git2/drivers/mtd/devices/block2mtd.c 2006-05-14 01:33:36.000000000 +0200 @@ -418,7 +418,8 @@ static inline void kill_final_newline(ch static int block2mtd_setup(const char *val, struct kernel_param *kp) { - char buf[80+12], *str=buf; /* 80 for device, 12 for erase size */ + char buf[80+12]; /* 80 for device, 12 for erase size */ + char *str = buf; char *token[2]; char *name; size_t erase_size = PAGE_SIZE; @@ -430,7 +431,7 @@ static int block2mtd_setup(const char *v strcpy(str, val); kill_final_newline(str); - for (i=0; i<2; i++) + for (i = 0; i < 2; i++) token[i] = strsep(&str, ","); if (str) @@ -449,8 +450,10 @@ static int block2mtd_setup(const char *v if (token[1]) { ret = parse_num(&erase_size, token[1]); - if (ret) + if (ret) { + kfree(name); parse_err("illegal erase size"); + } } add_device(name, erase_size);
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |