aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/system.h
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-01-19 12:36:09 +0100
committerIngo Molnar <mingo@elte.hu>2009-01-19 12:36:09 +0100
commit7890ba8c87604ca4c2c73f7de846bf5305d743e4 (patch)
treef3f920c09b8de694b1bc1d4b878cfd2b0b98c913 /arch/x86/include/asm/system.h
parent99937d6455cea95405ac681c86a857d0fcd530bd (diff)
parentb2b062b8163391c42b3219d466ca1ac9742b9c7b (diff)
downloadkernel_replicant_linux-7890ba8c87604ca4c2c73f7de846bf5305d743e4.tar.gz
kernel_replicant_linux-7890ba8c87604ca4c2c73f7de846bf5305d743e4.tar.bz2
kernel_replicant_linux-7890ba8c87604ca4c2c73f7de846bf5305d743e4.zip
Merge branch 'stackprotector' into core/percpu
Diffstat (limited to 'arch/x86/include/asm/system.h')
-rw-r--r--arch/x86/include/asm/system.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86/include/asm/system.h b/arch/x86/include/asm/system.h
index d1dc27dba36d..8cadfe9b1194 100644
--- a/arch/x86/include/asm/system.h
+++ b/arch/x86/include/asm/system.h
@@ -95,6 +95,8 @@ do { \
".globl thread_return\n" \
"thread_return:\n\t" \
"movq "__percpu_arg([current_task])",%%rsi\n\t" \
+ "movq %P[task_canary](%%rsi),%%r8\n\t" \
+ "movq %%r8,%%gs:%P[pda_canary]\n\t" \
"movq %P[thread_info](%%rsi),%%r8\n\t" \
LOCK_PREFIX "btr %[tif_fork],%P[ti_flags](%%r8)\n\t" \
"movq %%rax,%%rdi\n\t" \
@@ -106,7 +108,9 @@ do { \
[ti_flags] "i" (offsetof(struct thread_info, flags)), \
[tif_fork] "i" (TIF_FORK), \
[thread_info] "i" (offsetof(struct task_struct, stack)), \
- [current_task] "m" (per_cpu_var(current_task)) \
+ [task_canary] "i" (offsetof(struct task_struct, stack_canary)),\
+ [current_task] "m" (per_cpu_var(current_task)), \
+ [pda_canary] "i" (offsetof(struct x8664_pda, stack_canary))\
: "memory", "cc" __EXTRA_CLOBBER)
#endif