]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
x86/xen: fix xen_hypercall_hvm() to not clobber %rbx
authorJuergen Gross <jgross@suse.com>
Wed, 5 Feb 2025 08:43:31 +0000 (09:43 +0100)
committerJuergen Gross <jgross@suse.com>
Wed, 5 Feb 2025 16:23:15 +0000 (17:23 +0100)
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>
arch/x86/xen/xen-head.S

index 9252652afe59640d5affab03d08414205d017d80..72f28d66e0e5228fffd9cce14c9d0981b1b3d9dc 100644 (file)
@@ -117,8 +117,8 @@ SYM_FUNC_START(xen_hypercall_hvm)
        pop %ebx
        pop %eax
 #else
-       lea xen_hypercall_amd(%rip), %rbx
-       cmp %rax, %rbx
+       lea xen_hypercall_amd(%rip), %rcx
+       cmp %rax, %rcx
 #ifdef CONFIG_FRAME_POINTER
        pop %rax        /* Dummy pop. */
 #endif