Skip to content

Commit d19110b

Browse files
committed
Merge branch 'x86/ptrace-syscall-exit' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland
* 'x86/ptrace-syscall-exit' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland: x86: ptrace: sysret path should reach syscall_trace_leave
2 parents 433c24e + b60e714 commit d19110b

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

arch/x86/kernel/entry_64.S

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -536,20 +536,13 @@ sysret_signal:
536536
bt $TIF_SYSCALL_AUDIT,%edx
537537
jc sysret_audit
538538
#endif
539-
/* edx: work flags (arg3) */
540-
leaq -ARGOFFSET(%rsp),%rdi # &pt_regs -> arg1
541-
xorl %esi,%esi # oldset -> arg2
542-
SAVE_REST
543-
FIXUP_TOP_OF_STACK %r11
544-
call do_notify_resume
545-
RESTORE_TOP_OF_STACK %r11
546-
RESTORE_REST
547-
movl $_TIF_WORK_MASK,%edi
548-
/* Use IRET because user could have changed frame. This
549-
works because ptregscall_common has called FIXUP_TOP_OF_STACK. */
550-
DISABLE_INTERRUPTS(CLBR_NONE)
551-
TRACE_IRQS_OFF
552-
jmp int_with_check
539+
/*
540+
* We have a signal, or exit tracing or single-step.
541+
* These all wind up with the iret return path anyway,
542+
* so just join that path right now.
543+
*/
544+
FIXUP_TOP_OF_STACK %r11, -ARGOFFSET
545+
jmp int_check_syscall_exit_work
553546

554547
badsys:
555548
movq $-ENOSYS,RAX-ARGOFFSET(%rsp)
@@ -654,6 +647,7 @@ int_careful:
654647
int_very_careful:
655648
TRACE_IRQS_ON
656649
ENABLE_INTERRUPTS(CLBR_NONE)
650+
int_check_syscall_exit_work:
657651
SAVE_REST
658652
/* Check for syscall exit trace */
659653
testl $_TIF_WORK_SYSCALL_EXIT,%edx

0 commit comments

Comments
 (0)