|
@@ -140,6 +140,7 @@ sysexit_from_sys_call:
|
|
*/
|
|
*/
|
|
andl $~TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS)
|
|
andl $~TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS)
|
|
movl RIP(%rsp), %ecx /* User %eip */
|
|
movl RIP(%rsp), %ecx /* User %eip */
|
|
|
|
+ movq RAX(%rsp), %rax
|
|
RESTORE_RSI_RDI
|
|
RESTORE_RSI_RDI
|
|
xorl %edx, %edx /* Do not leak kernel information */
|
|
xorl %edx, %edx /* Do not leak kernel information */
|
|
xorq %r8, %r8
|
|
xorq %r8, %r8
|
|
@@ -219,7 +220,6 @@ sysexit_from_sys_call:
|
|
1: setbe %al /* 1 if error, 0 if not */
|
|
1: setbe %al /* 1 if error, 0 if not */
|
|
movzbl %al, %edi /* zero-extend that into %edi */
|
|
movzbl %al, %edi /* zero-extend that into %edi */
|
|
call __audit_syscall_exit
|
|
call __audit_syscall_exit
|
|
- movq RAX(%rsp), %rax /* reload syscall return value */
|
|
|
|
movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %edi
|
|
movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %edi
|
|
DISABLE_INTERRUPTS(CLBR_NONE)
|
|
DISABLE_INTERRUPTS(CLBR_NONE)
|
|
TRACE_IRQS_OFF
|
|
TRACE_IRQS_OFF
|
|
@@ -368,6 +368,7 @@ sysretl_from_sys_call:
|
|
RESTORE_RSI_RDI_RDX
|
|
RESTORE_RSI_RDI_RDX
|
|
movl RIP(%rsp), %ecx
|
|
movl RIP(%rsp), %ecx
|
|
movl EFLAGS(%rsp), %r11d
|
|
movl EFLAGS(%rsp), %r11d
|
|
|
|
+ movq RAX(%rsp), %rax
|
|
xorq %r10, %r10
|
|
xorq %r10, %r10
|
|
xorq %r9, %r9
|
|
xorq %r9, %r9
|
|
xorq %r8, %r8
|
|
xorq %r8, %r8
|