Commit ce22bd92 authored by Arjan van de Ven's avatar Arjan van de Ven Committed by Thomas Gleixner

x86: setup stack canary for the idle threads

The idle threads for non-boot CPUs are a bit special in how they
are created; the result is that these don't have the stack canary
set up properly in their PDA. Easiest fix is to just always set
the PDA up correctly when entering the idle thread; this is a NOP
for the boot cpu.
Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent e0032087
...@@ -146,6 +146,15 @@ static inline void play_dead(void) ...@@ -146,6 +146,15 @@ static inline void play_dead(void)
void cpu_idle(void) void cpu_idle(void)
{ {
current_thread_info()->status |= TS_POLLING; current_thread_info()->status |= TS_POLLING;
#ifdef CONFIG_CC_STACKPROTECTOR
/*
* If we're the non-boot CPU, nothing set the PDA stack
* canary up for us. This is as good a place as any for
* doing that.
*/
write_pda(stack_canary, current->stack_canary);
#endif
/* endless idle loop with no priority at all */ /* endless idle loop with no priority at all */
while (1) { while (1) {
tick_nohz_stop_sched_tick(); tick_nohz_stop_sched_tick();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment