[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] x86/nestedhvm: make L2's CLTS clear the CR0.TS that L2 reads



When L1 does not own CR0.TS, Xen emulates L2's CLTS but leaves TS set in
the CR0 value nvmx_set_cr_read_shadow() installs for L2, so L2 reads TS
set until its next VM exit to L1. Clear it there too, as hvm_update_cr()
does for MOV to CR0.

Fixes: ef17e127c411 ("Nested VMX: CR emulation fix up")
Signed-off-by: Mahmoud Abumandour <ma.mandourr@xxxxxxxxx>
---
Found by a VMX isolation fuzzer.

 xen/arch/x86/hvm/vmx/vmx.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 3c7374a9ff..b5176485b5 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -3294,6 +3294,8 @@ static int vmx_cr_access(cr_access_qual_t qual)
         if ( vm_event_is_enabled(curr) )
             hvm_monitor_crX(CR0, value, old);
         curr->arch.hvm.guest_cr[0] = value;
+        nestedhvm_set_cr(curr, 0,
+                         vcpu_nestedhvm(curr).guest_cr[0] & ~X86_CR0_TS);
         vmx_update_guest_cr(curr, 0, 0);
         TRACE(TRC_HVM_CLTS);
         break;
-- 
2.25.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.