diff options
| -rw-r--r-- | arch/x86/kernel/entry_64.S | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index 681c3fda7391..b5c061f8f358 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
| @@ -536,20 +536,13 @@ sysret_signal: | |||
| 536 | bt $TIF_SYSCALL_AUDIT,%edx | 536 | bt $TIF_SYSCALL_AUDIT,%edx |
| 537 | jc sysret_audit | 537 | jc sysret_audit |
| 538 | #endif | 538 | #endif |
| 539 | /* edx: work flags (arg3) */ | 539 | /* |
| 540 | leaq -ARGOFFSET(%rsp),%rdi # &pt_regs -> arg1 | 540 | * We have a signal, or exit tracing or single-step. |
| 541 | xorl %esi,%esi # oldset -> arg2 | 541 | * These all wind up with the iret return path anyway, |
| 542 | SAVE_REST | 542 | * so just join that path right now. |
| 543 | FIXUP_TOP_OF_STACK %r11 | 543 | */ |
| 544 | call do_notify_resume | 544 | FIXUP_TOP_OF_STACK %r11, -ARGOFFSET |
| 545 | RESTORE_TOP_OF_STACK %r11 | 545 | jmp int_check_syscall_exit_work |
| 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 | ||
| 553 | 546 | ||
| 554 | badsys: | 547 | badsys: |
| 555 | movq $-ENOSYS,RAX-ARGOFFSET(%rsp) | 548 | movq $-ENOSYS,RAX-ARGOFFSET(%rsp) |
| @@ -654,6 +647,7 @@ int_careful: | |||
| 654 | int_very_careful: | 647 | int_very_careful: |
| 655 | TRACE_IRQS_ON | 648 | TRACE_IRQS_ON |
| 656 | ENABLE_INTERRUPTS(CLBR_NONE) | 649 | ENABLE_INTERRUPTS(CLBR_NONE) |
| 650 | int_check_syscall_exit_work: | ||
| 657 | SAVE_REST | 651 | SAVE_REST |
| 658 | /* Check for syscall exit trace */ | 652 | /* Check for syscall exit trace */ |
| 659 | testl $_TIF_WORK_SYSCALL_EXIT,%edx | 653 | testl $_TIF_WORK_SYSCALL_EXIT,%edx |
