git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branches 'x86/urgent', 'x86/amd-iommu', 'x86/apic', 'x86/cleanups', 'x86/core...
[pandora-kernel.git]
/
arch
/
x86
/
kernel
/
entry_64.S
diff --git
a/arch/x86/kernel/entry_64.S
b/arch/x86/kernel/entry_64.S
index
80d5663
..
8410e26
100644
(file)
--- a/
arch/x86/kernel/entry_64.S
+++ b/
arch/x86/kernel/entry_64.S
@@
-349,8
+349,7
@@
ENTRY(system_call_after_swapgs)
movq %rcx,RIP-ARGOFFSET(%rsp)
CFI_REL_OFFSET rip,RIP-ARGOFFSET
GET_THREAD_INFO(%rcx)
movq %rcx,RIP-ARGOFFSET(%rsp)
CFI_REL_OFFSET rip,RIP-ARGOFFSET
GET_THREAD_INFO(%rcx)
- testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP), \
- TI_flags(%rcx)
+ testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%rcx)
jnz tracesys
cmpq $__NR_syscall_max,%rax
ja badsys
jnz tracesys
cmpq $__NR_syscall_max,%rax
ja badsys
@@
-430,7
+429,12
@@
tracesys:
FIXUP_TOP_OF_STACK %rdi
movq %rsp,%rdi
call syscall_trace_enter
FIXUP_TOP_OF_STACK %rdi
movq %rsp,%rdi
call syscall_trace_enter
- LOAD_ARGS ARGOFFSET /* reload args from stack in case ptrace changed it */
+ /*
+ * Reload arg registers from stack in case ptrace changed them.
+ * We don't reload %rax because syscall_trace_enter() returned
+ * the value it wants us to use in the table lookup.
+ */
+ LOAD_ARGS ARGOFFSET, 1
RESTORE_REST
cmpq $__NR_syscall_max,%rax
ja int_ret_from_sys_call /* RAX(%rsp) set to -ENOSYS above */
RESTORE_REST
cmpq $__NR_syscall_max,%rax
ja int_ret_from_sys_call /* RAX(%rsp) set to -ENOSYS above */
@@
-483,7
+487,7
@@
int_very_careful:
ENABLE_INTERRUPTS(CLBR_NONE)
SAVE_REST
/* Check for syscall exit trace */
ENABLE_INTERRUPTS(CLBR_NONE)
SAVE_REST
/* Check for syscall exit trace */
- testl $
(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP)
,%edx
+ testl $
_TIF_WORK_SYSCALL_EXIT
,%edx
jz int_signal
pushq %rdi
CFI_ADJUST_CFA_OFFSET 8
jz int_signal
pushq %rdi
CFI_ADJUST_CFA_OFFSET 8
@@
-491,7
+495,7
@@
int_very_careful:
call syscall_trace_leave
popq %rdi
CFI_ADJUST_CFA_OFFSET -8
call syscall_trace_leave
popq %rdi
CFI_ADJUST_CFA_OFFSET -8
- andl $~(_TIF_
SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP
),%edi
+ andl $~(_TIF_
WORK_SYSCALL_EXIT|_TIF_SYSCALL_EMU
),%edi
jmp int_restore_rest
int_signal:
jmp int_restore_rest
int_signal: