summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/entry.S
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-09-26 10:52:41 +0200
committerAndi Kleen <andi@basil.nowhere.org>2006-09-26 10:52:41 +0200
commit658fdbef66e5e9be79b457edc2cbbb3add840aa9 (patch)
tree931fa9bac154671ab96762fee73b3641b1191bb8 /arch/x86_64/kernel/entry.S
parent[PATCH] i386/x86-64: Work around gcc bug with noreturn functions in unwinder (diff)
downloadlinux-658fdbef66e5e9be79b457edc2cbbb3add840aa9.tar.xz
linux-658fdbef66e5e9be79b457edc2cbbb3add840aa9.zip
[PATCH] Don't leak NT bit into next task
SYSENTER can cause a NT to be set which might cause crashes on the IRET in the next task. Following similar i386 patch from Linus. Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/x86_64/kernel/entry.S')
-rw-r--r--arch/x86_64/kernel/entry.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86_64/kernel/entry.S b/arch/x86_64/kernel/entry.S
index 4cbc65290ae7..2802524104f3 100644
--- a/arch/x86_64/kernel/entry.S
+++ b/arch/x86_64/kernel/entry.S
@@ -155,6 +155,10 @@
/* rdi: prev */
ENTRY(ret_from_fork)
CFI_DEFAULT_STACK
+ push kernel_eflags(%rip)
+ CFI_ADJUST_CFA_OFFSET 4
+ popf # reset kernel eflags
+ CFI_ADJUST_CFA_OFFSET -4
call schedule_tail
GET_THREAD_INFO(%rcx)
testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),threadinfo_flags(%rcx)