|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/kexec: Replace CALL+UD2 pattern with JMP
Linux jumps to the target image rather than calling it. Switch to using JMP,
and drop the trailing UD2s.
Linux does have a mode, named CONFIG_KEXEC_JUMP, where the target image can be
returned from, but that involves extra metadata and setting up a stack within
the target image which Xen doesn't support at the moment.
No functional change.
Reported-by: Jan Beulich <jbeulich@xxxxxxxx>
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
xen/arch/x86/x86_64/kexec_reloc.S | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/xen/arch/x86/x86_64/kexec_reloc.S
b/xen/arch/x86/x86_64/kexec_reloc.S
index 50ba454abd48..b52d31a654e0 100644
--- a/xen/arch/x86/x86_64/kexec_reloc.S
+++ b/xen/arch/x86/x86_64/kexec_reloc.S
@@ -75,10 +75,8 @@ FUNC(kexec_reloc, PAGE_SIZE)
testq $KEXEC_RELOC_FLAG_COMPAT, %r8
jnz .L_call_32_bit
-.L_call_64_bit:
- /* Call the image entry point. This should never return. */
- callq *%rbp
- ud2
+ /* Jump to the image entry point */
+ jmp *%rbp
.L_call_32_bit:
/* Setup IDT. */
@@ -170,9 +168,8 @@ FUNC_LOCAL(compatibility_mode)
xorl %eax, %eax
movl %eax, %cr4
- /* Call the image entry point. This should never return. */
- call *%ebp
- ud2
+ /* Jump to the image entry point. */
+ jmp *%ebp
END(compatibility_mode)
/* Separate code and data into into different cache lines */
base-commit: 351d41e8aecc3f7566a0baa7b4066d06dedd7113
--
2.39.5
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |