armv7m: Improve armv7m_blank_check_memory() error handling
authorAndreas Färber <afaerber@suse.de>
Sun, 8 May 2016 14:46:03 +0000 (16:46 +0200)
committerFreddie Chopin <freddie.chopin@gmail.com>
Sat, 14 May 2016 10:53:39 +0000 (11:53 +0100)
Clean up the working area in case writing fails.
Adapted from armv7m_checksum_memory().

Change-Id: I4e5950f568ed70a72a1dcfd77e3321110b17e1de
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-on: http://openocd.zylin.com/3469
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/target/armv7m.c

index 52b394cf96ca61298dec58287433af5998101533..8662003e3d39474df34e6c54b13eb7770514cd3e 100644 (file)
@@ -781,7 +781,7 @@ int armv7m_blank_check_memory(struct target *target,
        retval = target_write_buffer(target, erase_check_algorithm->address,
                        sizeof(erase_check_code), (uint8_t *)erase_check_code);
        if (retval != ERROR_OK)
-               return retval;
+               goto cleanup;
 
        armv7m_info.common_magic = ARMV7M_COMMON_MAGIC;
        armv7m_info.core_mode = ARM_MODE_THREAD;
@@ -812,6 +812,7 @@ int armv7m_blank_check_memory(struct target *target,
        destroy_reg_param(&reg_params[1]);
        destroy_reg_param(&reg_params[2]);
 
+cleanup:
        target_free_working_area(target, erase_check_algorithm);
 
        return retval;