diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index cc0975f94a8de..eb0ff3657d18e 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -210,6 +210,8 @@ DEFINE_PER_CPU(bool, cpu_dead_idle); static void cpu_idle_loop(void) { while (1) { + int cpu = smp_processor_id(); + /* * If the arch has a polling bit, we maintain an invariant: * @@ -227,9 +229,9 @@ static void cpu_idle_loop(void) check_pgt_cache(); rmb(); - if (cpu_is_offline(smp_processor_id())) { + if (cpu_is_offline(cpu)) { rcu_cpu_notify(NULL, CPU_DYING_IDLE, - (void *)(long)smp_processor_id()); + (void *)(long)cpu); smp_mb(); /* all activity before dead. */ this_cpu_write(cpu_dead_idle, true); arch_cpu_idle_dead();