Re: [PATCH] mtd: nand: Fix memory allocation in nanddev_bbt_init()

From: Boris Brezillon
Date: Tue Nov 27 2018 - 03:22:49 EST


On Tue, 27 Nov 2018 07:44:52 +0000
Schrempf Frieder <frieder.schrempf@xxxxxxxxxx> wrote:

> Fix the size of the buffer allocated to store the in-memory BBT.
> This bug was previously hidden by a different bug, that was fixed in
> d098093ba06e.

Oops :-/.

>
> Fixes: 9c3736a3de21 ("mtd: nand: Add core infrastructure to deal with NAND devices")
> Cc: <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx>
> ---
> drivers/mtd/nand/bbt.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/nand/bbt.c b/drivers/mtd/nand/bbt.c
> index 56cde38..c12497f 100644
> --- a/drivers/mtd/nand/bbt.c
> +++ b/drivers/mtd/nand/bbt.c
> @@ -27,7 +27,8 @@ int nanddev_bbt_init(struct nand_device *nand)
> unsigned int nwords = DIV_ROUND_UP(nblocks * bits_per_block,
> BITS_PER_LONG);
>
> - nand->bbt.cache = kzalloc(nwords, GFP_KERNEL);
> + nand->bbt.cache = kzalloc(nwords * (BITS_PER_LONG / BITS_PER_BYTE),

I prefer

* sizeof(*nand->bbt.cache)
If you're okay with this change, I'll fix it when applying (no need to
send a new version).

Thanks,

Boris

> + GFP_KERNEL);
> if (!nand->bbt.cache)
> return -ENOMEM;
>