mtd: nand: fix error handling in nand_prog_page_op() #2
authorSascha Hauer <s.hauer@pengutronix.de>
Fri, 5 Feb 2021 14:27:25 +0000 (15:27 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 11 Mar 2021 08:37:29 +0000 (09:37 +0100)
commit8ffbec7df4d64446cb0479261524c490a2c7529e
tree857ce25e790211f295d1952861973f0c79cc999c
parentec9e0203a3598d979d6151703e673c8cb186304d
mtd: nand: fix error handling in nand_prog_page_op() #2

On success nand_exec_prog_page_op() returns the NAND status byte, but on
failure it returns a negative error code. nand_prog_page_op() interprets
the return value as NAND status byte without error checking.  This means
a failure in nand_exec_prog_page_op() can go through unnoticed.

The straight forward fix would be to add the missing error checking. To
clean the code a bit we can move the nand status check to
nand_prog_page_op().  This way we can get rid of the overloaded return
value from nand_exec_prog_page_op() and return a plain error code which
is less error prone.

nand_exec_prog_page_op() is only called from one other place and in this
call the 'prog' parameter is false in which case the nand status check
is skipped, so it's correct to not add the NAND status check there.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210205142725.13225-2-s.hauer@pengutronix.de
drivers/mtd/nand/raw/nand_base.c