From 5e4f77f4c27480a58a9b953d892eabab7ebd2ad7 Mon Sep 17 00:00:00 2001 From: Eric Mechin Date: Fri, 20 Jun 2025 11:18:30 +0200 Subject: [PATCH] drivers: flash: STM32WBA flash_stm32wba_fm.c: fix sector erase error The STM32WBA Flash Manager driver is failing to erase a sector, instead of erasing one sector, two sectors are erased. Fix it by correctly calculating the number of sectors to erase Signed-off-by: Eric Mechin (cherry picked from commit 62a1b8a306ba011f4bc8576dd93c9e2b4cbbd786) --- drivers/flash/flash_stm32wba_fm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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",