Thread (38 messages) 38 messages, 6 authors, 2016-03-02

Re: [patch 01/20] idle: Move x86ism out of generic code

From: Brian Gerst <hidden>
Date: 2016-02-27 20:29:42
Also in: lkml

On Fri, Feb 26, 2016 at 1:43 PM, Thomas Gleixner [off-list ref] wrote:
quoted hunk ↗ jump to hunk
We have an arch specific callback here already.

Signed-off-by: Thomas Gleixner <redacted>
---
 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();
 }
Does this actually work with stack protector enabled?
boot_init_stack_canary() is inlined while arch_cpu_idle_prepare() is
not.

--
Brian Gerst
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help