From 57d30184ca2d890db61dd4e87ae136b8ed4a5018 Mon Sep 17 00:00:00 2001 From: Jon Lin Date: Sun, 14 Jun 2020 18:55:35 +0800 Subject: [PATCH] drivers: rkflash: Fix error in counting BITS_PER_LONG Change-Id: I3a76a3a5003fcfcd7c079fd83d67f7161a85708a Signed-off-by: Jon Lin --- drivers/rkflash/sfc_nand_mtd_bbt.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/rkflash/sfc_nand_mtd_bbt.c b/drivers/rkflash/sfc_nand_mtd_bbt.c index 3a7e1fb82bf6..be1fe420c9cb 100644 --- a/drivers/rkflash/sfc_nand_mtd_bbt.c +++ b/drivers/rkflash/sfc_nand_mtd_bbt.c @@ -42,7 +42,7 @@ static int nanddev_read_bbt(struct snand_mtd_dev *nand, u32 block, bool update) unsigned int bits_per_block = fls(NAND_BBT_BLOCK_NUM_STATUS); unsigned int nblocks = snanddev_neraseblocks(nand); unsigned int nbytes = DIV_ROUND_UP(nblocks * bits_per_block, - BITS_PER_LONG) * 4; + BITS_PER_LONG) * sizeof(*nand->bbt.cache); struct mtd_info *mtd = snanddev_to_mtd(nand); u8 *data_buf, *oob_buf; struct nanddev_bbt_info *bbt_info; @@ -112,7 +112,7 @@ static int nanddev_write_bbt(struct snand_mtd_dev *nand, u32 block) unsigned int bits_per_block = fls(NAND_BBT_BLOCK_NUM_STATUS); unsigned int nblocks = snanddev_neraseblocks(nand); unsigned int nbytes = DIV_ROUND_UP(nblocks * bits_per_block, - BITS_PER_LONG) * 4; + BITS_PER_LONG) * sizeof(*nand->bbt.cache); struct mtd_info *mtd = snanddev_to_mtd(nand); u8 *data_buf, *oob_buf; struct nanddev_bbt_info *bbt_info; @@ -383,8 +383,8 @@ int snanddev_bbt_set_block_status(struct snand_mtd_dev *nand, if (entry >= snanddev_neraseblocks(nand)) return -ERANGE; - if (offs + bits_per_block - 1 > 31) - pos[0] &= ~GENMASK(31, offs); + if (offs + bits_per_block - 1 > (BITS_PER_LONG - 1)) + pos[0] &= ~GENMASK(BITS_PER_LONG - 1, offs); else pos[0] &= ~GENMASK(offs + bits_per_block - 1, offs); pos[0] |= val << offs;