linux/drivers/mtd/spi-nor
Michael Walle 388161ca45 mtd: spi-nor: otp: return -EROFS if region is read-only
SPI NOR flashes will just ignore program commands if the OTP region is
locked. Thus, a user might not notice that the intended write didn't end
up in the flash. Return -EROFS to the user in this case. From what I can
tell, chips/cfi_cmdset_0001.c also return this error code.

One could optimize spi_nor_mtd_otp_range_is_locked() to read the status
register only once and not for every OTP region, but for that we would
need some more invasive changes. Given that this is
one-time-programmable memory and the normal access mode is reading, we
just live with the small overhead.

By moving the code around a bit, we can just check the length before
calling spi_nor_mtd_otp_range_is_locked() and avoid an underflow there
if a len is 0. This way we don't need to take the lock either. We also
skip the "*retlen = 0" assignment, mtdcore already takes care of that
for us.

Fixes: 069089acf8 ("mtd: spi-nor: add OTP support")
Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Reviewed-by: Pratyush Yadav <p.yadav@ti.com>
Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com>
2021-06-09 23:34:15 +05:30
..
controllers mtd: spi-nor: intel-spi: Add support for Intel Alder Lake-M SPI serial flash 2021-05-27 14:25:43 +05:30
atmel.c mtd: spi-nor: keep lock bits if they are non-volatile 2020-12-07 23:01:15 +05:30
catalyst.c mtd: spi-nor: Move Catalyst bits out of core.c 2020-03-17 09:28:05 +02:00
core.c mtd: spi-nor: Add documentation for spi_nor_soft_reset() 2021-05-26 21:47:34 +05:30
core.h mtd: core: Constify buf in mtd_write_user_prot_reg() 2021-04-16 20:30:54 +02:00
eon.c mtd: spi-nor: Move Eon bits out of core.c 2020-03-17 09:28:02 +02:00
esmt.c mtd: spi-nor: keep lock bits if they are non-volatile 2020-12-07 23:01:15 +05:30
everspin.c mtd: spi-nor: Move Everspin bits out of core.c 2020-03-17 09:28:03 +02:00
fujitsu.c mtd: spi-nor: Move Fujitsu bits out of core.c 2020-03-17 09:28:03 +02:00
gigadevice.c mtd: spi-nor: Trim what is exposed in spi-nor.h 2020-03-17 09:28:07 +02:00
intel.c mtd: spi-nor: keep lock bits if they are non-volatile 2020-12-07 23:01:15 +05:30
issi.c mtd: spi-nor: Get rid of duplicated argument in spi_nor_parse_sfdp() 2021-03-15 18:01:47 +02:00
Kconfig mtd: spi-nor: keep lock bits if they are non-volatile 2020-12-07 23:01:15 +05:30
macronix.c mtd: spi-nor: enable locking support for MX25L12805D 2021-05-27 20:04:38 +05:30
Makefile mtd: spi-nor: add OTP support 2021-04-02 09:30:15 +03:00
micron-st.c mtd: spi-nor: micron-st: allow using MT35XU512ABA in Octal DTR mode 2020-11-09 19:00:14 +05:30
otp.c mtd: spi-nor: otp: return -EROFS if region is read-only 2021-06-09 23:34:15 +05:30
sfdp.c mtd: spi-nor: Get rid of duplicated argument in spi_nor_parse_sfdp() 2021-03-15 18:01:47 +02:00
sfdp.h mtd: spi-nor: Get rid of duplicated argument in spi_nor_parse_sfdp() 2021-03-15 18:01:47 +02:00
spansion.c mtd: spi-nor: Get rid of duplicated argument in spi_nor_parse_sfdp() 2021-03-15 18:01:47 +02:00
sst.c mtd: spi-nor: sst: Add support for Global Unlock on sst26vf 2021-02-05 15:24:59 +02:00
swp.c mtd: spi-nor: swp: Improve code around spi_nor_check_lock_status_sr() 2021-03-31 22:41:34 +03:00
winbond.c mtd: spi-nor: winbond: add OTP support to w25q32fw/jw 2021-04-02 09:32:27 +03:00
xilinx.c mtd: spi-nor: Trim what is exposed in spi-nor.h 2020-03-17 09:28:07 +02:00
xmc.c mtd: spi-nor: Move XMC bits out of core.c 2020-03-17 09:28:06 +02:00