summaryrefslogtreecommitdiff
path: root/src/target/etm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/target/etm.c')
-rw-r--r--src/target/etm.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/target/etm.c b/src/target/etm.c
index 43158b56..4c94e6bf 100644
--- a/src/target/etm.c
+++ b/src/target/etm.c
@@ -349,10 +349,7 @@ struct reg_cache *etm_build_reg_cache(struct target *target,
break;
default:
LOG_WARNING("Bad ETMv1 protocol %d", config >> 28);
- free(reg_cache);
- free(reg_list);
- free(arch_info);
- return ERROR_OK;
+ goto fail;
}
}
etm_ctx->bcd_vers = bcd_vers;
@@ -396,10 +393,7 @@ struct reg_cache *etm_build_reg_cache(struct target *target,
if (!etb)
{
LOG_ERROR("etb selected as etm capture driver, but no ETB configured");
- free(reg_cache);
- free(reg_list);
- free(arch_info);
- return ERROR_OK;
+ goto fail;
}
reg_cache->next = etb_build_reg_cache(etb);
@@ -409,6 +403,12 @@ struct reg_cache *etm_build_reg_cache(struct target *target,
etm_ctx->reg_cache = reg_cache;
return reg_cache;
+
+fail:
+ free(reg_cache);
+ free(reg_list);
+ free(arch_info);
+ return NULL;
}
static int etm_read_reg(struct reg *reg)