diff --git a/kernel/events/core.c b/kernel/events/core.c index cbbfc9699763..4b544ca00726 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -4006,8 +4006,8 @@ int perf_event_read_local(struct perf_event *event, u64 *value, { unsigned long flags; int ret = 0; - int local_cpu = smp_processor_id(); - bool readable = cpumask_test_cpu(local_cpu, &event->readable_on_cpus); + int local_cpu; + bool readable; /* * Disabling interrupts avoids all counter scheduling (context * switches, timer based rotation and IPIs). @@ -4031,6 +4031,8 @@ int perf_event_read_local(struct perf_event *event, u64 *value, } /* If this is a per-CPU event, it must be for this CPU */ + local_cpu = raw_smp_processor_id(); + readable = cpumask_test_cpu(local_cpu, &event->readable_on_cpus); if (!(event->attach_state & PERF_ATTACH_TASK) && event->cpu != local_cpu && !readable) {