We have an arch specific callback here already.

Signed-off-by: Thomas Gleixner <t...@linutronix.de>
---
 arch/x86/kernel/process.c |   12 ++++++++++++
 kernel/sched/idle.c       |   15 ---------------
 2 files changed, 12 insertions(+), 15 deletions(-)

Index: b/arch/x86/kernel/process.c
===================================================================
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -271,6 +271,18 @@ void exit_idle(void)
 }
 #endif
 
+void arch_cpu_idle_prepare(void)
+{
+       /*
+        * If we're the non-boot CPU, nothing set the stack canary up
+        * for us. The boot CPU already has it initialized but no harm
+        * in doing it again. This is a good place for updating it, as
+        * we wont ever return from this function (so the invalid
+        * canaries already on the stack wont ever trigger).
+        */
+       boot_init_stack_canary();
+}
+
 void arch_cpu_idle_enter(void)
 {
        local_touch_nmi();
Index: b/kernel/sched/idle.c
===================================================================
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -275,21 +275,6 @@ static void cpu_idle_loop(void)
 
 void cpu_startup_entry(enum cpuhp_state state)
 {
-       /*
-        * This #ifdef needs to die, but it's too late in the cycle to
-        * make this generic (arm and sh have never invoked the canary
-        * init for the non boot cpus!). Will be fixed in 3.11
-        */
-#ifdef CONFIG_X86
-       /*
-        * If we're the non-boot CPU, nothing set the stack canary up
-        * for us. The boot CPU already has it initialized but no harm
-        * in doing it again. This is a good place for updating it, as
-        * we wont ever return from this function (so the invalid
-        * canaries already on the stack wont ever trigger).
-        */
-       boot_init_stack_canary();
-#endif
        arch_cpu_idle_prepare();
        cpu_idle_loop();
 }


Reply via email to