summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Shiyan <shc_work@mail.ru>2013-04-26 20:41:12 +0400
committerSascha Hauer <s.hauer@pengutronix.de>2013-04-30 09:35:55 +0200
commit7c15fd1b09349d853bf340fa58bcf71e85f716d2 (patch)
tree72345dcf9019f4c497d96c53aa10dc2f4927dd6f
parent32d531574fa46ecb4deee6d4e885e98f527827c4 (diff)
downloadbarebox-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.c9
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);
}