summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-05-04 16:50:47 -0600
committerBin Meng <bmeng@tinylab.org>2023-05-11 10:25:29 +0800
commit28afcb1e7f7d1b899514cbdb58fb658ee0b5c5a3 (patch)
tree4d173663af99e0362599bfb1d8155037481c72c6
parentf2fac8b5571b2537cf499bab9a7962e19f64e9de (diff)
downloadu-boot-28afcb1e7f7d1b899514cbdb58fb658ee0b5c5a3.tar.gz
sf: Guard against zero erasesize
With tiny SPI flash the erasesize is 0 which can cause a divide-by-zero error. Check for this and return a proper error instead. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
-rw-r--r--drivers/mtd/spi/sf_probe.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
index e192f97efd..de6516f106 100644
--- a/drivers/mtd/spi/sf_probe.c
+++ b/drivers/mtd/spi/sf_probe.c
@@ -189,7 +189,8 @@ static int spi_flash_std_erase(struct udevice *dev, u32 offset, size_t len)
struct mtd_info *mtd = &flash->mtd;
struct erase_info instr;
- if (offset % mtd->erasesize || len % mtd->erasesize) {
+ if (!mtd->erasesize ||
+ (offset % mtd->erasesize || len % mtd->erasesize)) {
debug("SF: Erase offset/length not multiple of erase size\n");
return -EINVAL;
}