sf: Fix NULL pointer exception for flashes without lock methods
commit c3c016c
"sf: Add SPI NOR protection mechanism" introduced
flash_lock()/flash_unlock()/flash_is_locked() methods for SPI flash,
but not every flash driver supplies these. We should test these
methods against NULL before actually calling them.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Fabio Estevam <fabio.estevam@freescale.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
This commit is contained in:
parent
9ac4fc8207
commit
439fcb9b4f
@ -268,9 +268,12 @@ int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (flash->flash_is_locked(flash, offset, len) > 0) {
|
||||
printf("offset 0x%x is protected and cannot be erased\n", offset);
|
||||
return -EINVAL;
|
||||
if (flash->flash_is_locked) {
|
||||
if (flash->flash_is_locked(flash, offset, len) > 0) {
|
||||
printf("offset 0x%x is protected and cannot be erased\n",
|
||||
offset);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
cmd[0] = flash->erase_cmd;
|
||||
@ -315,9 +318,12 @@ int spi_flash_cmd_write_ops(struct spi_flash *flash, u32 offset,
|
||||
|
||||
page_size = flash->page_size;
|
||||
|
||||
if (flash->flash_is_locked(flash, offset, len) > 0) {
|
||||
printf("offset 0x%x is protected and cannot be written\n", offset);
|
||||
return -EINVAL;
|
||||
if (flash->flash_is_locked) {
|
||||
if (flash->flash_is_locked(flash, offset, len) > 0) {
|
||||
printf("offset 0x%x is protected and cannot be written\n",
|
||||
offset);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
cmd[0] = flash->write_cmd;
|
||||
|
@ -237,7 +237,7 @@ static inline int spi_flash_erase(struct spi_flash *flash, u32 offset,
|
||||
static inline int spi_flash_protect(struct spi_flash *flash, u32 ofs, u32 len,
|
||||
bool prot)
|
||||
{
|
||||
if (!flash->flash_lock)
|
||||
if (!flash->flash_lock || !flash->flash_unlock)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (prot)
|
||||
|
Loading…
Reference in New Issue
Block a user