Message ID | 1448043971-20230-1-git-send-email-festevam@gmail.com |
---|---|
State | Accepted |
Commit | f49289ce64b7f7da4d7129666854b499b9d415eb |
Headers | show |
On Fri, Nov 20, 2015 at 04:26:11PM -0200, Fabio Estevam wrote: > From: Fabio Estevam <fabio.estevam@freescale.com> > > We should better check the return value from read_sr() and > propagate it in the case of error. > > Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> > --- > Changes since v1: > - Change status_old and status_new to int (Brian). > > drivers/mtd/spi-nor/spi-nor.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c > index 16c9f55..b5e505d 100644 > --- a/drivers/mtd/spi-nor/spi-nor.c > +++ b/drivers/mtd/spi-nor/spi-nor.c > @@ -459,11 +459,13 @@ static int stm_is_locked_sr(struct spi_nor *nor, loff_t ofs, uint64_t len, > static int stm_lock(struct spi_nor *nor, loff_t ofs, uint64_t len) > { > struct mtd_info *mtd = &nor->mtd; > - u8 status_old, status_new; > + int status_old, status_new; > u8 mask = SR_BP2 | SR_BP1 | SR_BP0; > u8 shift = ffs(mask) - 1, pow, val; > > status_old = read_sr(nor); > + if (status_old < 0) > + return status_old; This wasn't exactly what I was imagining (I figured have an 'int ret' just for th error code, but still keep 'u8 status_{old,new}'), but still looks good to me. Applied to l2-mtd.git. Thanks! Brian > > /* SPI NOR always locks to the end */ > if (ofs + len != mtd->size) { > @@ -509,11 +511,13 @@ static int stm_lock(struct spi_nor *nor, loff_t ofs, uint64_t len) > static int stm_unlock(struct spi_nor *nor, loff_t ofs, uint64_t len) > { > struct mtd_info *mtd = &nor->mtd; > - uint8_t status_old, status_new; > + int status_old, status_new; > u8 mask = SR_BP2 | SR_BP1 | SR_BP0; > u8 shift = ffs(mask) - 1, pow, val; > > status_old = read_sr(nor); > + if (status_old < 0) > + return status_old; > > /* Cannot unlock; would unlock larger region than requested */ > if (stm_is_locked_sr(nor, status_old, ofs - mtd->erasesize, > @@ -1013,6 +1017,8 @@ static int macronix_quad_enable(struct spi_nor *nor) > int ret, val; > > val = read_sr(nor); > + if (val < 0) > + return val; > write_enable(nor); > > write_sr(nor, val | SR_QUAD_EN_MX); > -- > 1.9.1 >
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c index 16c9f55..b5e505d 100644 --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c @@ -459,11 +459,13 @@ static int stm_is_locked_sr(struct spi_nor *nor, loff_t ofs, uint64_t len, static int stm_lock(struct spi_nor *nor, loff_t ofs, uint64_t len) { struct mtd_info *mtd = &nor->mtd; - u8 status_old, status_new; + int status_old, status_new; u8 mask = SR_BP2 | SR_BP1 | SR_BP0; u8 shift = ffs(mask) - 1, pow, val; status_old = read_sr(nor); + if (status_old < 0) + return status_old; /* SPI NOR always locks to the end */ if (ofs + len != mtd->size) { @@ -509,11 +511,13 @@ static int stm_lock(struct spi_nor *nor, loff_t ofs, uint64_t len) static int stm_unlock(struct spi_nor *nor, loff_t ofs, uint64_t len) { struct mtd_info *mtd = &nor->mtd; - uint8_t status_old, status_new; + int status_old, status_new; u8 mask = SR_BP2 | SR_BP1 | SR_BP0; u8 shift = ffs(mask) - 1, pow, val; status_old = read_sr(nor); + if (status_old < 0) + return status_old; /* Cannot unlock; would unlock larger region than requested */ if (stm_is_locked_sr(nor, status_old, ofs - mtd->erasesize, @@ -1013,6 +1017,8 @@ static int macronix_quad_enable(struct spi_nor *nor) int ret, val; val = read_sr(nor); + if (val < 0) + return val; write_enable(nor); write_sr(nor, val | SR_QUAD_EN_MX);