• Tejun Heo's avatar
    x86: fix x86_32 stack protector bugs · 5c79d2a5
    Tejun Heo authored
    Impact: fix x86_32 stack protector
    
    Brian Gerst found out that %gs was being initialized to stack_canary
    instead of stack_canary - 20, which basically gave the same canary
    value for all threads.  Fixing this also exposed the following bugs.
    
    * cpu_idle() didn't call boot_init_stack_canary()
    
    * stack canary switching in switch_to() was being done too late making
      the initial run of a new thread use the old stack canary value.
    
    Fix all of them and while at it update comment in cpu_idle() about
    calling boot_init_stack_canary().
    Reported-by: default avatarBrian Gerst <brgerst@gmail.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    5c79d2a5
stackprotector.h 3.9 KB