diff options
author | Tejun Heo <tj@kernel.org> | 2009-02-09 08:17:40 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-02-09 18:42:01 -0500 |
commit | 60a5317ff0f42dd313094b88f809f63041568b08 (patch) | |
tree | 307dfd9715fbc9ff83c3c3ae3b0e8f03888083f2 /arch/x86/Kconfig | |
parent | ccbeed3a05908d201b47b6c3dd1a373138bba566 (diff) |
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>
Diffstat (limited to 'arch/x86/Kconfig')
-rw-r--r-- | arch/x86/Kconfig | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 5bcdede71ba4..f760a22f95dc 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -209,7 +209,7 @@ config X86_TRAMPOLINE | |||
209 | 209 | ||
210 | config X86_32_LAZY_GS | 210 | config X86_32_LAZY_GS |
211 | def_bool y | 211 | def_bool y |
212 | depends on X86_32 | 212 | depends on X86_32 && !CC_STACKPROTECTOR |
213 | 213 | ||
214 | config KTIME_SCALAR | 214 | config KTIME_SCALAR |
215 | def_bool X86_32 | 215 | def_bool X86_32 |
@@ -1356,7 +1356,6 @@ config CC_STACKPROTECTOR_ALL | |||
1356 | 1356 | ||
1357 | config CC_STACKPROTECTOR | 1357 | config CC_STACKPROTECTOR |
1358 | bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" | 1358 | bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" |
1359 | depends on X86_64 | ||
1360 | select CC_STACKPROTECTOR_ALL | 1359 | select CC_STACKPROTECTOR_ALL |
1361 | help | 1360 | help |
1362 | This option turns on the -fstack-protector GCC feature. This | 1361 | This option turns on the -fstack-protector GCC feature. This |