Commit 11f84b5b authored by Christophe JAILLET's avatar Christophe JAILLET Committed by sanglipeng
Browse files

mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op()

stable inclusion
from stable-v5.10.190
commit 1f09d67d390647f83f8f9d26382b0daa43756e6f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I928UI

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=1f09d67d390647f83f8f9d26382b0daa43756e6f



--------------------------------

[ Upstream commit c6abce60 ]

'op-cs' is copied in 'fun->mchip_number' which is used to access the
'mchip_offsets' and the 'rnb_gpio' arrays.
These arrays have NAND_MAX_CHIPS elements, so the index must be below this
limit.

Fix the sanity check in order to avoid the NAND_MAX_CHIPS value. This
would lead to out-of-bound accesses.

Fixes: 54309d65 ("mtd: rawnand: fsl_upm: Implement exec_op()")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/cd01cba1c7eda58bdabaae174c78c067325803d2.1689803636.git.christophe.jaillet@wanadoo.fr


Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarsanglipeng <sanglipeng1@jd.com>
parent 06616f66
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ static int fun_exec_op(struct nand_chip *chip, const struct nand_operation *op,
	unsigned int i;
	int ret;

	if (op->cs > NAND_MAX_CHIPS)
	if (op->cs >= NAND_MAX_CHIPS)
		return -EINVAL;

	if (check_only)