x86/entry/compat: Combine return value test from syscall handler
authorBrian Gerst <brgerst@gmail.com>
Fri, 21 Jul 2023 16:10:14 +0000 (12:10 -0400)
committerIngo Molnar <mingo@kernel.org>
Thu, 5 Oct 2023 08:06:42 +0000 (10:06 +0200)
Move the sysret32_from_system_call label to remove a duplicate test of
the return value from the syscall handler.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20230721161018.50214-4-brgerst@gmail.com
arch/x86/entry/entry_64_compat.S

index 70150298f8bdf5ea1cfa9f895a0443b521e5b60b..b16272395f1aad8a0d4b765d4d02d4c94aed92e3 100644 (file)
@@ -118,9 +118,6 @@ SYM_INNER_LABEL(entry_SYSENTER_compat_after_hwframe, SYM_L_GLOBAL)
 
        movq    %rsp, %rdi
        call    do_SYSENTER_32
-       /* XEN PV guests always use IRET path */
-       ALTERNATIVE "testl %eax, %eax; jz swapgs_restore_regs_and_return_to_usermode", \
-                   "jmp swapgs_restore_regs_and_return_to_usermode", X86_FEATURE_XENPV
        jmp     sysret32_from_system_call
 
 .Lsysenter_fix_flags:
@@ -212,13 +209,15 @@ SYM_INNER_LABEL(entry_SYSCALL_compat_after_hwframe, SYM_L_GLOBAL)
 
        movq    %rsp, %rdi
        call    do_fast_syscall_32
+
+sysret32_from_system_call:
        /* XEN PV guests always use IRET path */
        ALTERNATIVE "testl %eax, %eax; jz swapgs_restore_regs_and_return_to_usermode", \
                    "jmp swapgs_restore_regs_and_return_to_usermode", X86_FEATURE_XENPV
 
-       /* Opportunistic SYSRET */
-sysret32_from_system_call:
        /*
+        * Opportunistic SYSRET
+        *
         * We are not going to return to userspace from the trampoline
         * stack. So let's erase the thread stack right now.
         */