mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/entry: fix jump into restore_all_guest without %rbx correctly set
e047b8d0fawent too far when limiting obtaining the vCPU pointer. While the code in ist_dispatch_done does indeed only need the vCPU pointer when PV32 is enabled, the !PV32 path will end up jumping into restore_all_guest which does require rbx == vCPU pointer. Fix by moving the fetching of the vCPU pointer to be done outside of the PV32 code block. Fixes:e047b8d0fa('x86/entry: replace two GET_CURRENT() uses') Reported-by: Edwin Torok <edwin.torok@cloud.com> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
dbdd7e8df7
commit
c378ff8983
1 file changed
+2
-1
@@ -1139,8 +1139,9 @@ FUNC(handle_ist_exception)
|
||||
movl $EVENT_CHECK_VECTOR,%edi
|
||||
call send_IPI_self
|
||||
1:
|
||||
#ifdef CONFIG_PV32
|
||||
/* For restore_all_guest. */
|
||||
mov STACK_CPUINFO_FIELD(current_vcpu)(%r14), %rbx
|
||||
#ifdef CONFIG_PV32
|
||||
movq VCPU_domain(%rbx),%rax
|
||||
cmpb $0,DOMAIN_is_32bit_pv(%rax)
|
||||
je restore_all_guest
|
||||
|
||||