diff mbox series

[04/13] imx: nandbcb: Fix resource leak in read_fcb

Message ID 20210114072810.11873-4-peng.fan@oss.nxp.com
State Accepted
Commit f637c40dd7ec664cc911a84282ab3d1ee925f6eb
Delegated to: Stefano Babic
Headers show
Series [01/13] imx: lowlevel: implement armv8_el2_to_aarch32 | expand

Commit Message

Peng Fan (OSS) Jan. 14, 2021, 7:28 a.m. UTC
From: Ye Li <ye.li@nxp.com>

Fix Coverity Issue 9006657. In read_fcb, leak of memory to system
resource "fcb_raw_page". Adjust the sequence to check the mtd bad
block prior than allocation of "fcb_raw_page", also check the NULL
return of allocation.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cmd_nandbcb.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/arch/arm/mach-imx/cmd_nandbcb.c b/arch/arm/mach-imx/cmd_nandbcb.c
index 6e50471164..836981c895 100644
--- a/arch/arm/mach-imx/cmd_nandbcb.c
+++ b/arch/arm/mach-imx/cmd_nandbcb.c
@@ -503,13 +503,18 @@  static int read_fcb(struct boot_config *boot_cfg, struct fcb_block *fcb,
 	int ret = 0;
 
 	mtd = boot_cfg->mtd;
-	fcb_raw_page = kzalloc(mtd->writesize + mtd->oobsize, GFP_KERNEL);
-
 	if (mtd_block_isbad(mtd, off)) {
 		printf("Block %d is bad, skipped\n", (int)CONV_TO_BLOCKS(off));
 		return 1;
 	}
 
+	fcb_raw_page = kzalloc(mtd->writesize + mtd->oobsize, GFP_KERNEL);
+	if (!fcb_raw_page) {
+		debug("failed to allocate fcb_raw_page\n");
+		ret = -ENOMEM;
+		return ret;
+	}
+
 	/*
 	 * User BCH hardware to decode ECC for FCB
 	 */