mtd: rawnand: fsmc: Fix unchecked return value in fsmc_read_page_hwecc
Check return value of nand_read_data_op. Notice that, currently, all instances of nand_read_data_op() are being checked, with the exception of two of them in marvell_nand driver, in which the caller function explicitly returns 0 every time. Also, notice that I moved the declaration of *ret* to the top of fsmc_read_page_hwecc(). Addresses-Coverity-ID: 1471968 ("Unchecked return value") Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
This commit is contained in:
parent
9a4d830747
commit
41d6f0d07d
|
@ -727,7 +727,7 @@ static int fsmc_read_page_hwecc(struct nand_chip *chip, uint8_t *buf,
|
||||||
uint8_t *p = buf;
|
uint8_t *p = buf;
|
||||||
uint8_t *ecc_calc = chip->ecc.calc_buf;
|
uint8_t *ecc_calc = chip->ecc.calc_buf;
|
||||||
uint8_t *ecc_code = chip->ecc.code_buf;
|
uint8_t *ecc_code = chip->ecc.code_buf;
|
||||||
int off, len, group = 0;
|
int off, len, ret, group = 0;
|
||||||
/*
|
/*
|
||||||
* ecc_oob is intentionally taken as uint16_t. In 16bit devices, we
|
* ecc_oob is intentionally taken as uint16_t. In 16bit devices, we
|
||||||
* end up reading 14 bytes (7 words) from oob. The local array is
|
* end up reading 14 bytes (7 words) from oob. The local array is
|
||||||
|
@ -740,11 +740,12 @@ static int fsmc_read_page_hwecc(struct nand_chip *chip, uint8_t *buf,
|
||||||
for (i = 0, s = 0; s < eccsteps; s++, i += eccbytes, p += eccsize) {
|
for (i = 0, s = 0; s < eccsteps; s++, i += eccbytes, p += eccsize) {
|
||||||
nand_read_page_op(chip, page, s * eccsize, NULL, 0);
|
nand_read_page_op(chip, page, s * eccsize, NULL, 0);
|
||||||
chip->ecc.hwctl(chip, NAND_ECC_READ);
|
chip->ecc.hwctl(chip, NAND_ECC_READ);
|
||||||
nand_read_data_op(chip, p, eccsize, false);
|
ret = nand_read_data_op(chip, p, eccsize, false);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
for (j = 0; j < eccbytes;) {
|
for (j = 0; j < eccbytes;) {
|
||||||
struct mtd_oob_region oobregion;
|
struct mtd_oob_region oobregion;
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = mtd_ooblayout_ecc(mtd, group++, &oobregion);
|
ret = mtd_ooblayout_ecc(mtd, group++, &oobregion);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
Loading…
Reference in New Issue