mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-26 06:04:14 +08:00
perf hist: Add error path into hist_entry__init
Adding error path into hist_entry__init to unify error handling, so every new member does not need to free everything else. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jonas Rabenstein <jonas.rabenstein@studium.uni-erlangen.de> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Cc: nageswara r sastry <nasastry@in.ibm.com> Link: http://lkml.kernel.org/r/20190305152536.21035-3-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
e34c940245
commit
c57589106f
@ -396,11 +396,8 @@ static int hist_entry__init(struct hist_entry *he,
|
||||
* adding new entries. So we need to save a copy.
|
||||
*/
|
||||
he->branch_info = malloc(sizeof(*he->branch_info));
|
||||
if (he->branch_info == NULL) {
|
||||
map__zput(he->ms.map);
|
||||
free(he->stat_acc);
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (he->branch_info == NULL)
|
||||
goto err;
|
||||
|
||||
memcpy(he->branch_info, template->branch_info,
|
||||
sizeof(*he->branch_info));
|
||||
@ -419,21 +416,8 @@ static int hist_entry__init(struct hist_entry *he,
|
||||
|
||||
if (he->raw_data) {
|
||||
he->raw_data = memdup(he->raw_data, he->raw_size);
|
||||
|
||||
if (he->raw_data == NULL) {
|
||||
map__put(he->ms.map);
|
||||
if (he->branch_info) {
|
||||
map__put(he->branch_info->from.map);
|
||||
map__put(he->branch_info->to.map);
|
||||
free(he->branch_info);
|
||||
}
|
||||
if (he->mem_info) {
|
||||
map__put(he->mem_info->iaddr.map);
|
||||
map__put(he->mem_info->daddr.map);
|
||||
}
|
||||
free(he->stat_acc);
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (he->raw_data == NULL)
|
||||
goto err_infos;
|
||||
}
|
||||
INIT_LIST_HEAD(&he->pairs.node);
|
||||
thread__get(he->thread);
|
||||
@ -444,6 +428,21 @@ static int hist_entry__init(struct hist_entry *he,
|
||||
he->leaf = true;
|
||||
|
||||
return 0;
|
||||
|
||||
err_infos:
|
||||
if (he->branch_info) {
|
||||
map__put(he->branch_info->from.map);
|
||||
map__put(he->branch_info->to.map);
|
||||
free(he->branch_info);
|
||||
}
|
||||
if (he->mem_info) {
|
||||
map__put(he->mem_info->iaddr.map);
|
||||
map__put(he->mem_info->daddr.map);
|
||||
}
|
||||
err:
|
||||
map__zput(he->ms.map);
|
||||
free(he->stat_acc);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
static void *hist_entry__zalloc(size_t size)
|
||||
|
Loading…
Reference in New Issue
Block a user