diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-01-19 12:36:09 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-19 12:36:09 +0100 |
commit | 7890ba8c87604ca4c2c73f7de846bf5305d743e4 (patch) | |
tree | f3f920c09b8de694b1bc1d4b878cfd2b0b98c913 /arch/x86/include/asm/system.h | |
parent | 99937d6455cea95405ac681c86a857d0fcd530bd (diff) | |
parent | b2b062b8163391c42b3219d466ca1ac9742b9c7b (diff) | |
download | kernel_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.h | 6 |
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 |