From: Felipe W Damasio <felipewd@terra.com.br>

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;
 		}
 

_