On Fri, Feb 26, 2016 at 1:43 PM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote: > We have an arch specific callback here already. > > Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > --- > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html