diff options
Diffstat (limited to 'arch/x86/kernel/entry_64.S')
-rw-r--r-- | arch/x86/kernel/entry_64.S | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index cdc790c78f3..0c58952d64e 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
@@ -563,15 +563,13 @@ ENTRY(ret_from_fork) | |||
563 | jmp ret_from_sys_call # go to the SYSRET fastpath | 563 | jmp ret_from_sys_call # go to the SYSRET fastpath |
564 | 564 | ||
565 | 1: | 565 | 1: |
566 | subq $REST_SKIP, %rsp # move the stack pointer back | 566 | subq $REST_SKIP, %rsp # leave space for volatiles |
567 | CFI_ADJUST_CFA_OFFSET REST_SKIP | 567 | CFI_ADJUST_CFA_OFFSET REST_SKIP |
568 | movq %rbp, %rdi | 568 | movq %rbp, %rdi |
569 | call *%rbx | 569 | call *%rbx |
570 | # exit | 570 | movl $0, RAX(%rsp) |
571 | mov %eax, %edi | 571 | RESTORE_REST |
572 | call do_exit | 572 | jmp int_ret_from_sys_call |
573 | ud2 # padding for call trace | ||
574 | |||
575 | CFI_ENDPROC | 573 | CFI_ENDPROC |
576 | END(ret_from_fork) | 574 | END(ret_from_fork) |
577 | 575 | ||
@@ -1326,20 +1324,6 @@ bad_gs: | |||
1326 | jmp 2b | 1324 | jmp 2b |
1327 | .previous | 1325 | .previous |
1328 | 1326 | ||
1329 | ENTRY(ret_from_kernel_execve) | ||
1330 | movq %rdi, %rsp | ||
1331 | movl $0, RAX(%rsp) | ||
1332 | // RESTORE_REST | ||
1333 | movq 0*8(%rsp), %r15 | ||
1334 | movq 1*8(%rsp), %r14 | ||
1335 | movq 2*8(%rsp), %r13 | ||
1336 | movq 3*8(%rsp), %r12 | ||
1337 | movq 4*8(%rsp), %rbp | ||
1338 | movq 5*8(%rsp), %rbx | ||
1339 | addq $(6*8), %rsp | ||
1340 | jmp int_ret_from_sys_call | ||
1341 | END(ret_from_kernel_execve) | ||
1342 | |||
1343 | /* Call softirq on interrupt stack. Interrupts are off. */ | 1327 | /* Call softirq on interrupt stack. Interrupts are off. */ |
1344 | ENTRY(call_softirq) | 1328 | ENTRY(call_softirq) |
1345 | CFI_STARTPROC | 1329 | CFI_STARTPROC |