From c281c64469de3c92b2fad0933722cb95b710b02a Mon Sep 17 00:00:00 2001 From: Tarek BOCHKATI Date: Sun, 29 Aug 2021 16:02:58 +0100 Subject: [PATCH] flash/stm32l4x: free write_algorithm work area if no space left for the buffer If the remaining memory for the buffer is less than 256 bytes, the memory allocated for the write algorithm in the target is not freed. Fixes: ba131f30a079 (Flash driver for STM32G0xx and STM32G4xx) Change-Id: Ic649f6c39799d76725b0c69ff3a009a3f510e17f Signed-off-by: Tarek BOCHKATI Reviewed-on: https://review.openocd.org/c/openocd/+/6486 Tested-by: jenkins Reviewed-by: Oleksij Rempel --- src/flash/nor/stm32l4x.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/flash/nor/stm32l4x.c b/src/flash/nor/stm32l4x.c index b8635fe75..3c055616f 100644 --- a/src/flash/nor/stm32l4x.c +++ b/src/flash/nor/stm32l4x.c @@ -1353,6 +1353,7 @@ static int stm32l4_write_block(struct flash_bank *bank, const uint8_t *buffer, buffer_size = target_get_working_area_avail(target) & ~(2 * sizeof(uint32_t) - 1); if (buffer_size < 256) { LOG_WARNING("large enough working area not available, can't do block memory writes"); + target_free_working_area(target, write_algorithm); return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; } else if (buffer_size > 16384) { /* probably won't benefit from more than 16k ... */