diff options
author | Alexander Shiyan <shc_work@mail.ru> | 2013-04-26 20:41:12 +0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-04-30 09:35:55 +0200 |
commit | 7c15fd1b09349d853bf340fa58bcf71e85f716d2 (patch) | |
tree | 72345dcf9019f4c497d96c53aa10dc2f4927dd6f | |
parent | 32d531574fa46ecb4deee6d4e885e98f527827c4 (diff) | |
download | barebox-7c15fd1b09349d853bf340fa58bcf71e85f716d2.tar.gz barebox-7c15fd1b09349d853bf340fa58bcf71e85f716d2.tar.xz |
NAND: imx: Fix memory leak
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | drivers/mtd/nand/nand_imx_bbm.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/mtd/nand/nand_imx_bbm.c b/drivers/mtd/nand/nand_imx_bbm.c index 03961a0fb3..135d74e664 100644 --- a/drivers/mtd/nand/nand_imx_bbm.c +++ b/drivers/mtd/nand/nand_imx_bbm.c @@ -91,7 +91,7 @@ static void *create_bbt(struct mtd_info *mtd) buf = malloc(mtd->writesize); if (!buf) { ret = -ENOMEM; - goto out; + goto out2; } numblocks = mtd->size >> (chip->bbt_erase_shift - 1); @@ -99,7 +99,7 @@ static void *create_bbt(struct mtd_info *mtd) for (i = 0; i < numblocks;) { ret = checkbad(mtd, from, buf); if (ret < 0) - goto out; + goto out1; if (ret) { bbt[i >> 3] |= 0x03 << (i & 0x6); @@ -112,8 +112,11 @@ static void *create_bbt(struct mtd_info *mtd) } return bbt; -out: + +out1: free(buf); +out2: + free(bbt); return ERR_PTR(ret); } |