-
- Downloads
x86: implement x86_32 stack protector
Impact: stack protector for x86_32 Implement stack protector for x86_32. GDT entry 28 is used for it. It's set to point to stack_canary-20 and have the length of 24 bytes. CONFIG_CC_STACKPROTECTOR turns off CONFIG_X86_32_LAZY_GS and sets %gs to the stack canary segment on entry. As %gs is otherwise unused by the kernel, the canary can be anywhere. It's defined as a percpu variable. x86_32 exception handlers take register frame on stack directly as struct pt_regs. With -fstack-protector turned on, gcc copies the whole structure after the stack canary and (of course) doesn't copy back on return thus losing all changed. For now, -fno-stack-protector is added to all files which contain those functions. We definitely need something better. Signed-off-by:Tejun Heo <tj@kernel.org> Signed-off-by:
Ingo Molnar <mingo@elte.hu>
Showing
- arch/x86/Kconfig 1 addition, 2 deletionsarch/x86/Kconfig
- arch/x86/include/asm/processor.h 4 additions, 0 deletionsarch/x86/include/asm/processor.h
- arch/x86/include/asm/segment.h 8 additions, 1 deletionarch/x86/include/asm/segment.h
- arch/x86/include/asm/stackprotector.h 86 additions, 5 deletionsarch/x86/include/asm/stackprotector.h
- arch/x86/include/asm/system.h 21 additions, 0 deletionsarch/x86/include/asm/system.h
- arch/x86/kernel/Makefile 18 additions, 0 deletionsarch/x86/kernel/Makefile
- arch/x86/kernel/cpu/common.c 11 additions, 6 deletionsarch/x86/kernel/cpu/common.c
- arch/x86/kernel/entry_32.S 1 addition, 1 deletionarch/x86/kernel/entry_32.S
- arch/x86/kernel/head_32.S 19 additions, 1 deletionarch/x86/kernel/head_32.S
- arch/x86/kernel/process_32.c 1 addition, 0 deletionsarch/x86/kernel/process_32.c
- arch/x86/kernel/setup_percpu.c 2 additions, 0 deletionsarch/x86/kernel/setup_percpu.c
- scripts/gcc-x86_32-has-stack-protector.sh 8 additions, 0 deletionsscripts/gcc-x86_32-has-stack-protector.sh
Loading
Please register or sign in to comment