• T
    idle: Add the stack canary init to cpu_startup_entry() · d7880812
    Thomas Gleixner 提交于
    Moving x86 to the generic idle implementation (commit 7d1a9417 "x86:
    Use generic idle loop") wreckaged the stack protector.
    
    I stupidly missed that boot_init_stack_canary() must be inlined from a
    function which never returns, but I put that call into
    arch_cpu_idle_prepare() which of course returns.
    
    I pondered to play tricks with arch_cpu_idle_prepare() first, but then
    I noticed, that the other archs which have implemented the
    stackprotector (ARM and SH) do not initialize the canary for the
    non-boot cpus.
    
    So I decided to move the boot_init_stack_canary() call into
    cpu_startup_entry() ifdeffed with an CONFIG_X86 for now. This #ifdef
    is just a temporary measure as I don't want to inflict the
    boot_init_stack_canary() call on ARM and SH that late in the cycle.
    
    I'll queue a patch for 3.11 which removes the #ifdef if the ARM/SH
    maintainers have no objection.
    Reported-by: NWouter van Kesteren <woutershep@gmail.com>
    Cc: x86@kernel.org
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    d7880812
idle.c 3.0 KB