• Ingo Molnar's avatar
    x86: fix execve with -fstack-protect · 5d119b2c
    Ingo Molnar authored
    pointed out by pageexec@freemail.hu:
    
    > what happens here is that gcc treats the argument area as owned by the
    > callee, not the caller and is allowed to do certain tricks. for ssp it
    > will make a copy of the struct passed by value into the local variable
    > area and pass *its* address down, and it won't copy it back into the
    > original instance stored in the argument area.
    >
    > so once sys_execve returns, the pt_regs passed by value hasn't at all
    > changed and its default content will cause a nice double fault (FWIW,
    > this part took me the longest to debug, being down with cold didn't
    > help it either ;).
    
    To fix this we pass in pt_regs by pointer.
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    5d119b2c
entry_64.S 27.8 KB