diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 39046033e143..037c7aa150c1 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -982,16 +982,23 @@ static int arm_spe__get_midr(struct arm_spe *spe, int cpu, u64 *midr) pr_warning_once("Old SPE metadata, re-record to improve decode accuracy\n"); cpuid = perf_env__cpuid(perf_session__env(spe->session)); + if (!cpuid) + goto err; + *midr = strtol(cpuid, NULL, 16); return 0; } metadata = arm_spe__get_metadata_by_cpu(spe, cpu); if (!metadata) - return -EINVAL; + goto err; *midr = metadata[ARM_SPE_CPU_MIDR]; return 0; + +err: + pr_warning_once("Failed to get MIDR for CPU %d\n", cpu); + return -EINVAL; } static void arm_spe__synth_ds(struct arm_spe_queue *speq,