[U-Boot] [PATCH] nand: vybrid: Use calloc() instead of malloc() to allocate struct nfc

Stefan Agner stefan at agner.ch
Thu Dec 6 12:13:19 UTC 2018


On 03.12.2018 10:20, Lukasz Majewski wrote:
> Without this change it is possible that Vybrid's NFC driver malloc() call
> will obtain some memory used (and correctly free'd) by some previous
> driver (in this case pinctrl for Vybrid).
> 
> As a result some fields of struct nfc - in out case mtd->_get_device - are
> "pre initialized" with some random values.
> 
> On the latter stage of booting, when e.g. somebody calls 'mtdparts default'
> the "data abort" is observed when __get_mtd_device() function is called.
> 
> The mtd->_get_device pointer is not NULL and wrong value is referenced.
> 
> Signed-off-by: Lukasz Majewski <lukma at denx.de>

Looks good:

Reviewed-by: Stefan Agner <stefan.agner at toradex.com>

--
Stefan

> 
> ---
> 
>  drivers/mtd/nand/raw/vf610_nfc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mtd/nand/raw/vf610_nfc.c b/drivers/mtd/nand/raw/vf610_nfc.c
> index fce7e5f299..3326c2b096 100644
> --- a/drivers/mtd/nand/raw/vf610_nfc.c
> +++ b/drivers/mtd/nand/raw/vf610_nfc.c
> @@ -646,7 +646,7 @@ static int vf610_nfc_nand_init(int devnum, void
> __iomem *addr)
>  		.flash_bbt = 1,
>  	};
>  
> -	nfc = malloc(sizeof(*nfc));
> +	nfc = calloc(1, sizeof(*nfc));
>  	if (!nfc) {
>  		printf(KERN_ERR "%s: Memory exhausted!\n", __func__);
>  		return -ENOMEM;


More information about the U-Boot mailing list