From: Felipe W Damasio If other kmallocs failed after successfully allocating a "struct mtd_info", it should be freed before returning NULL. 25-akpm/drivers/mtd/chips/cfi_cmdset_0020.c | 2 ++ 1 files changed, 2 insertions(+) diff -puN drivers/mtd/chips/cfi_cmdset_0020.c~mtd-leak-fix drivers/mtd/chips/cfi_cmdset_0020.c --- 25/drivers/mtd/chips/cfi_cmdset_0020.c~mtd-leak-fix Tue Sep 23 13:33:15 2003 +++ 25-akpm/drivers/mtd/chips/cfi_cmdset_0020.c Tue Sep 23 13:33:15 2003 @@ -208,6 +208,7 @@ static struct mtd_info *cfi_staa_setup(s if (!mtd->eraseregions) { printk(KERN_ERR "Failed to allocate memory for MTD erase region info\n"); kfree(cfi->cmdset_priv); + kfree(mtd); return NULL; } @@ -232,6 +233,7 @@ static struct mtd_info *cfi_staa_setup(s printk(KERN_WARNING "Sum of regions (%lx) != total size of set of interleaved chips (%lx)\n", offset, devsize); kfree(mtd->eraseregions); kfree(cfi->cmdset_priv); + kfree(mtd); return NULL; } _