diff options
| author | Ye Li <ye.li@nxp.com> | 2020-08-02 22:43:45 -0700 | 
|---|---|---|
| committer | Stefano Babic <sbabic@denx.de> | 2021-01-23 11:30:31 +0100 | 
| commit | f637c40dd7ec664cc911a84282ab3d1ee925f6eb (patch) | |
| tree | 11795f12a25e1a37d3e1d0f0d3a35d520baebb02 /arch/arm/mach-imx/cmd_nandbcb.c | |
| parent | fc11dc112d1defef0091a3ba2b5785b00e502929 (diff) | |
imx: nandbcb: Fix resource leak in read_fcb
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>
Diffstat (limited to 'arch/arm/mach-imx/cmd_nandbcb.c')
| -rw-r--r-- | arch/arm/mach-imx/cmd_nandbcb.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/arch/arm/mach-imx/cmd_nandbcb.c b/arch/arm/mach-imx/cmd_nandbcb.c index 6e504711649..836981c8957 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  	 */ | 
