@@ -536,20 +536,13 @@ sysret_signal:
536
536
bt $TIF_SYSCALL_AUDIT,%edx
537
537
jc sysret_audit
538
538
#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
553
546
554
547
badsys:
555
548
movq $-ENOSYS,RAX-ARGOFFSET(%rsp )
@@ -654,6 +647,7 @@ int_careful:
654
647
int_very_careful:
655
648
TRACE_IRQS_ON
656
649
ENABLE_INTERRUPTS(CLBR_NONE)
650
+ int_check_syscall_exit_work:
657
651
SAVE_REST
658
652
/* Check for syscall exit trace */
659
653
testl $_TIF_WORK_SYSCALL_EXIT,%edx
0 commit comments