armv4_5: Improve arm_checksum_memory() error handling
Clean up the working area in case writing fails. Change the error handling paradigm to avoid duplication. Change-Id: Ie3f95f992a98a1325428e4032a1c17346d4c9977 Signed-off-by: Andreas Färber <afaerber@suse.de> Reviewed-on: http://openocd.zylin.com/3472 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
This commit is contained in:
parent
fcaf7e0cfe
commit
1eb19b8de5
|
@ -1467,7 +1467,7 @@ int arm_checksum_memory(struct target *target,
|
|||
crc_algorithm->address + i * sizeof(uint32_t),
|
||||
arm_crc_code[i]);
|
||||
if (retval != ERROR_OK)
|
||||
return retval;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
arm_algo.common_magic = ARM_COMMON_MAGIC;
|
||||
|
@ -1491,22 +1491,19 @@ int arm_checksum_memory(struct target *target,
|
|||
crc_algorithm->address,
|
||||
exit_var,
|
||||
timeout, &arm_algo);
|
||||
if (retval != ERROR_OK) {
|
||||
LOG_ERROR("error executing ARM crc algorithm");
|
||||
destroy_reg_param(®_params[0]);
|
||||
destroy_reg_param(®_params[1]);
|
||||
target_free_working_area(target, crc_algorithm);
|
||||
return retval;
|
||||
}
|
||||
|
||||
*checksum = buf_get_u32(reg_params[0].value, 0, 32);
|
||||
if (retval == ERROR_OK)
|
||||
*checksum = buf_get_u32(reg_params[0].value, 0, 32);
|
||||
else
|
||||
LOG_ERROR("error executing ARM crc algorithm");
|
||||
|
||||
destroy_reg_param(®_params[0]);
|
||||
destroy_reg_param(®_params[1]);
|
||||
|
||||
cleanup:
|
||||
target_free_working_area(target, crc_algorithm);
|
||||
|
||||
return ERROR_OK;
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue