Commit fd63091f authored by James Clark's avatar James Clark Committed by Arnaldo Carvalho de Melo

perf cs-etm: Cleanup cs_etm__process_auxtrace_info()

hdr is a copy of 3 values of ptr and doesn't need to be long lived. So
just use ptr instead which means the malloc and the extra error path can
be removed to simplify things.
Signed-off-by: default avatarJames Clark <james.clark@arm.com>
Cc: Al Grant <Al.Grant@arm.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.g.garry@oracle.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: coresight@lists.linaro.org
Cc: linux-arm-kernel@lists.infradead.org
Link: https://lore.kernel.org/r/20221212155513.2259623-5-james.clark@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent b00204f5
...@@ -2888,7 +2888,7 @@ int cs_etm__process_auxtrace_info(union perf_event *event, ...@@ -2888,7 +2888,7 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
int num_cpu, trcidr_idx; int num_cpu, trcidr_idx;
int err = 0; int err = 0;
int i, j; int i, j;
u64 *ptr, *hdr = NULL; u64 *ptr = NULL;
u64 **metadata = NULL; u64 **metadata = NULL;
u64 hdr_version; u64 hdr_version;
...@@ -2914,15 +2914,8 @@ int cs_etm__process_auxtrace_info(union perf_event *event, ...@@ -2914,15 +2914,8 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
return -EINVAL; return -EINVAL;
} }
hdr = zalloc(sizeof(*hdr) * CS_HEADER_VERSION_MAX); num_cpu = ptr[CS_PMU_TYPE_CPUS] & 0xffffffff;
if (!hdr) pmu_type = (unsigned int) ((ptr[CS_PMU_TYPE_CPUS] >> 32) &
return -ENOMEM;
/* Extract header information - see cs-etm.h for format */
for (i = 0; i < CS_HEADER_VERSION_MAX; i++)
hdr[i] = ptr[i];
num_cpu = hdr[CS_PMU_TYPE_CPUS] & 0xffffffff;
pmu_type = (unsigned int) ((hdr[CS_PMU_TYPE_CPUS] >> 32) &
0xffffffff); 0xffffffff);
if (dump_trace) if (dump_trace)
...@@ -2934,10 +2927,8 @@ int cs_etm__process_auxtrace_info(union perf_event *event, ...@@ -2934,10 +2927,8 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
* in anything other than a sequential array is worth doing. * in anything other than a sequential array is worth doing.
*/ */
traceid_list = intlist__new(NULL); traceid_list = intlist__new(NULL);
if (!traceid_list) { if (!traceid_list)
err = -ENOMEM; return -ENOMEM;
goto err_free_hdr;
}
metadata = zalloc(sizeof(*metadata) * num_cpu); metadata = zalloc(sizeof(*metadata) * num_cpu);
if (!metadata) { if (!metadata) {
...@@ -2945,6 +2936,9 @@ int cs_etm__process_auxtrace_info(union perf_event *event, ...@@ -2945,6 +2936,9 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
goto err_free_traceid_list; goto err_free_traceid_list;
} }
/* Start parsing after the common part of the header */
i = CS_HEADER_VERSION_MAX;
/* /*
* The metadata is stored in the auxtrace_info section and encodes * The metadata is stored in the auxtrace_info section and encodes
* the configuration of the ARM embedded trace macrocell which is * the configuration of the ARM embedded trace macrocell which is
...@@ -3043,7 +3037,7 @@ int cs_etm__process_auxtrace_info(union perf_event *event, ...@@ -3043,7 +3037,7 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
etm->num_cpu = num_cpu; etm->num_cpu = num_cpu;
etm->pmu_type = pmu_type; etm->pmu_type = pmu_type;
etm->snapshot_mode = (hdr[CS_ETM_SNAPSHOT] != 0); etm->snapshot_mode = (ptr[CS_ETM_SNAPSHOT] != 0);
etm->metadata = metadata; etm->metadata = metadata;
etm->auxtrace_type = auxtrace_info->type; etm->auxtrace_type = auxtrace_info->type;
etm->timeless_decoding = cs_etm__is_timeless_decoding(etm); etm->timeless_decoding = cs_etm__is_timeless_decoding(etm);
...@@ -3110,7 +3104,5 @@ int cs_etm__process_auxtrace_info(union perf_event *event, ...@@ -3110,7 +3104,5 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
zfree(&metadata); zfree(&metadata);
err_free_traceid_list: err_free_traceid_list:
intlist__delete(traceid_list); intlist__delete(traceid_list);
err_free_hdr:
zfree(&hdr);
return err; return err;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment