diff --git a/drivers/flash/flash_stm32wba_fm.c b/drivers/flash/flash_stm32wba_fm.c index 08838a147aad3..df8c41e28ebaf 100644 --- a/drivers/flash/flash_stm32wba_fm.c +++ b/drivers/flash/flash_stm32wba_fm.c @@ -93,7 +93,7 @@ static int flash_stm32_erase(const struct device *dev, off_t offset, size_t len) { int rc; - int sect_num = (len / FLASH_PAGE_SIZE) + 1; + int sect_num; if (!flash_stm32_valid_range(dev, offset, len, true)) { LOG_ERR("Erase range invalid. Offset: %p, len: %zu", @@ -105,6 +105,9 @@ static int flash_stm32_erase(const struct device *dev, off_t offset, return 0; } + /* len is a multiple of FLASH_PAGE_SIZE */ + sect_num = len / FLASH_PAGE_SIZE; + flash_stm32_sem_take(dev); LOG_DBG("Erase offset: %p, page: %ld, len: %zu, sect num: %d",