From: Jan Beulich Date: Thu, 3 May 2018 15:35:51 +0000 (+0200) Subject: x86: fix return value checks of set_guest_{machinecheck,nmi}_trapbounce X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~134 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4611f529c0e39493a3945641cc161967a864d6b5;p=xen.git x86: fix return value checks of set_guest_{machinecheck,nmi}_trapbounce Commit 0142064421 ("x86/traps: move set_guest_{machine,nmi}_trapbounce") converted the functions' return types from int to bool without also correcting the checks in assembly code: The ABI does not guarantee sub- 32-bit return values to be promoted to 32 bits. Take the liberty and also adjust the number of spaces used in the compat code, such that both code sequences end up similar (they already are in the non-compat case). Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Release-acked-by: Juergen Gross --- diff --git a/xen/arch/x86/x86_64/compat/entry.S b/xen/arch/x86/x86_64/compat/entry.S index ae2bb4bf1e..af8650ef4a 100644 --- a/xen/arch/x86/x86_64/compat/entry.S +++ b/xen/arch/x86/x86_64/compat/entry.S @@ -74,9 +74,9 @@ compat_process_mce: testb $1 << VCPU_TRAP_MCE,VCPU_async_exception_mask(%rbx) jnz .Lcompat_test_guest_nmi sti - movb $0,VCPU_mce_pending(%rbx) - call set_guest_machinecheck_trapbounce - testl %eax,%eax + movb $0, VCPU_mce_pending(%rbx) + call set_guest_machinecheck_trapbounce + test %al, %al jz compat_test_all_events movzbl VCPU_async_exception_mask(%rbx),%edx # save mask for the movb %dl,VCPU_mce_old_mask(%rbx) # iret hypercall @@ -88,11 +88,11 @@ compat_process_mce: /* %rbx: struct vcpu */ compat_process_nmi: testb $1 << VCPU_TRAP_NMI,VCPU_async_exception_mask(%rbx) - jnz compat_test_guest_events + jnz compat_test_guest_events sti - movb $0,VCPU_nmi_pending(%rbx) + movb $0, VCPU_nmi_pending(%rbx) call set_guest_nmi_trapbounce - testl %eax,%eax + test %al, %al jz compat_test_all_events movzbl VCPU_async_exception_mask(%rbx),%edx # save mask for the movb %dl,VCPU_nmi_old_mask(%rbx) # iret hypercall diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 9c45c00bb0..b52721dfec 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -77,7 +77,7 @@ process_mce: sti movb $0, VCPU_mce_pending(%rbx) call set_guest_machinecheck_trapbounce - test %eax, %eax + test %al, %al jz test_all_events movzbl VCPU_async_exception_mask(%rbx), %edx # save mask for the movb %dl, VCPU_mce_old_mask(%rbx) # iret hypercall @@ -93,7 +93,7 @@ process_nmi: sti movb $0, VCPU_nmi_pending(%rbx) call set_guest_nmi_trapbounce - test %eax, %eax + test %al, %al jz test_all_events movzbl VCPU_async_exception_mask(%rbx), %edx # save mask for the movb %dl, VCPU_nmi_old_mask(%rbx) # iret hypercall