bogus_64_magic is only a dead-end loop. There is no need for an
out-of-order function (and unannotated local label), so just handle it
in-place and also store 0xbad-m-a-g-i-c to rcx beforehand.

Signed-off-by: Jiri Slaby <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Cc: Pavel Machek <[email protected]>
Cc: Len Brown <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: [email protected]
Cc: [email protected]
---
 arch/x86/kernel/acpi/wakeup_64.S | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/acpi/wakeup_64.S b/arch/x86/kernel/acpi/wakeup_64.S
index b0715c3ac18d..7f9ade13bbcf 100644
--- a/arch/x86/kernel/acpi/wakeup_64.S
+++ b/arch/x86/kernel/acpi/wakeup_64.S
@@ -18,8 +18,13 @@ ENTRY(wakeup_long64)
        movq    saved_magic, %rax
        movq    $0x123456789abcdef0, %rdx
        cmpq    %rdx, %rax
-       jne     bogus_64_magic
+       je      2f
 
+       /* stop here on a saved_magic mismatch */
+       movq $0xbad6d61676963, %rcx
+1:
+       jmp 1b
+2:
        movw    $__KERNEL_DS, %ax
        movw    %ax, %ss        
        movw    %ax, %ds
@@ -37,9 +42,6 @@ ENTRY(wakeup_long64)
        jmp     *%rax
 ENDPROC(wakeup_long64)
 
-bogus_64_magic:
-       jmp     bogus_64_magic
-
 ENTRY(do_suspend_lowlevel)
        FRAME_BEGIN
        subq    $8, %rsp
-- 
2.23.0

Reply via email to