x86/xen: fix xen_hypercall_hvm() to not clobber %rbx

[ Upstream commit 98a5cfd2320966f40fe049a9855f8787f0126825 ]

xen_hypercall_hvm(), which is used when running as a Xen PVH guest at
most only once during early boot, is clobbering %rbx. Depending on
whether the caller relies on %rbx to be preserved across the call or
not, this clobbering might result in an early crash of the system.

This can be avoided by using an already saved register instead of %rbx.

Fixes: b4845bb63838 ("x86/xen: add central hypercall functions")
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Juergen Gross
2025-02-05 09:43:31 +01:00
committed by Greg Kroah-Hartman
parent 667f61b349
commit 522d726824

View File

@@ -110,8 +110,8 @@ SYM_FUNC_START(xen_hypercall_hvm)
pop %ebx pop %ebx
pop %eax pop %eax
#else #else
lea xen_hypercall_amd(%rip), %rbx lea xen_hypercall_amd(%rip), %rcx
cmp %rax, %rbx cmp %rax, %rcx
#ifdef CONFIG_FRAME_POINTER #ifdef CONFIG_FRAME_POINTER
pop %rax /* Dummy pop. */ pop %rax /* Dummy pop. */
#endif #endif