This is an automated email from Gerrit. "Tomas Vanek <van...@fbl.cz>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8452
-- gerrit commit 6315a03ed16ded546192c001b8ff1c6515bda653 Author: Tomas Vanek <van...@fbl.cz> Date: Wed Aug 14 09:39:42 2024 +0200 flash/nor/rp2040: add missing TARGET_HALTED checks Flash erase and write require this guard, unfortunately it is also partially needed in the flash probe. Partially backported from former upstream rp2040.c Signed-off-by: Tomas Vanek <van...@fbl.cz> Change-Id: Ie8a240e66c3ed68e08f872cbbfdd90a6d80e1f1e diff --git a/src/flash/nor/rp2040.c b/src/flash/nor/rp2040.c index 1858c2ffda..7ae1972c81 100644 --- a/src/flash/nor/rp2040.c +++ b/src/flash/nor/rp2040.c @@ -745,6 +745,12 @@ static int rp2040_flash_write(struct flash_bank *bank, const uint8_t *buffer, ui struct rp2040_flash_bank *priv = bank->driver_priv; struct target *target = bank->target; + + if (target->state != TARGET_HALTED) { + LOG_ERROR("Target not halted"); + return ERROR_TARGET_NOT_HALTED; + } + struct working_area *bounce; int err = setup_for_raw_flash_cmd(target, priv); @@ -832,6 +838,12 @@ static int rp2040_flash_erase(struct flash_bank *bank, unsigned int first, unsig { struct rp2040_flash_bank *priv = bank->driver_priv; struct target *target = bank->target; + + if (target->state != TARGET_HALTED) { + LOG_ERROR("Target not halted"); + return ERROR_TARGET_NOT_HALTED; + } + uint32_t start_addr = bank->sectors[first].offset; uint32_t length = bank->sectors[last].offset + bank->sectors[last].size - start_addr; LOG_DEBUG("RP2040 erase %d bytes starting at 0x%" PRIx32, length, start_addr); @@ -1105,6 +1117,11 @@ static int rp2040_flash_probe(struct flash_bank *bank) priv->spi_dev.name = "size override"; LOG_DEBUG("SPI flash autodetection disabled, using configured size"); } else { + if (target->state != TARGET_HALTED) { + LOG_ERROR("Target not halted"); + return ERROR_TARGET_NOT_HALTED; + } + bank->size = 0; (void)setup_for_raw_flash_cmd(target, priv); @@ -1214,6 +1231,12 @@ COMMAND_HANDLER(rp2040_rom_api_call_handler) struct rp2040_flash_bank *priv = bank->driver_priv; struct target *target = bank->target; + + if (target->state != TARGET_HALTED) { + LOG_ERROR("Target not halted"); + return ERROR_TARGET_NOT_HALTED; + } + retval = setup_for_raw_flash_cmd(target, priv); if (retval != ERROR_OK) goto cleanup_and_return; --