[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