summaryrefslogtreecommitdiffstats
path: root/arch/x86/power
diff options
context:
space:
mode:
authorJoseph Cihula <joseph.cihula@intel.com>2009-03-30 14:03:01 -0700
committerIngo Molnar <mingo@elte.hu>2009-04-03 19:48:41 +0200
commit9b7b89efa3bdaceaa2efb93e2d635391835da209 (patch)
treef98eb1e69b74b32098f8f2d3ae2deb8546b3fa82 /arch/x86/power
parent6a491e2e3e52a64c6d88a192c56499d931842ac5 (diff)
downloadlinux-9b7b89efa3bdaceaa2efb93e2d635391835da209.tar.gz
linux-9b7b89efa3bdaceaa2efb93e2d635391835da209.tar.bz2
linux-9b7b89efa3bdaceaa2efb93e2d635391835da209.zip
x86: disable stack-protector for __restore_processor_state()
The __restore_processor_state() fn restores %gs on resume from S3. As such, it cannot be protected by the stack-protector guard since %gs will not be correct on function entry. There are only a few other fns in this file and it should not negatively impact kernel security that they will also have the stack-protector guard removed (and so it's not worth moving them to another file). Without this change, S3 resume on a kernel built with CONFIG_CC_STACKPROTECTOR_ALL=y will fail. Signed-off-by: Joseph Cihula <joseph.cihula@intel.com> Tested-by: Chris Wright <chrisw@sous-sol.org> Cc: Arjan van de Ven <arjan@linux.intel.com> Cc: Tejun Heo <tj@kernel.org> LKML-Reference: <49D13385.5060900@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/power')
-rw-r--r--arch/x86/power/Makefile5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/power/Makefile b/arch/x86/power/Makefile
index 9ff4d5b55ad1..58b32db33125 100644
--- a/arch/x86/power/Makefile
+++ b/arch/x86/power/Makefile
@@ -1,2 +1,7 @@
+# __restore_processor_state() restores %gs after S3 resume and so should not
+# itself be stack-protected
+nostackp := $(call cc-option, -fno-stack-protector)
+CFLAGS_cpu_$(BITS).o := $(nostackp)
+
obj-$(CONFIG_PM_SLEEP) += cpu_$(BITS).o
obj-$(CONFIG_HIBERNATION) += hibernate_$(BITS).o hibernate_asm_$(BITS).o