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

Re: [Xen-devel] [PATCH V6] x86/altp2m: Make sure EPTP_INDEX is up-to-date when enabling #VE



> From: Razvan Cojocaru [mailto:rcojocaru@xxxxxxxxxxxxxxx]
> Sent: Thursday, August 2, 2018 2:26 PM
> 
> vmx_vmexit_handler() assumes that if
> SECONDARY_EXEC_ENABLE_VIRT_EXCEPTIONS is set, that the value in
> EPTP_INDEX is valid.  Unfortunately, the function which sets this bit
> (vmx_vcpu_update_vmfunc_ve) doesn't actually set EPTP_INDEX; it will
> only be set the next time vmx_vcpu_update_eptp() is called.
> 
> This means that if a vcpu makes a vmexit between these two points, the
> EPTP_INDEX it reads will be invalid.  The first time this race happens
> for a domain, EPTP_INDEX will most likely be zero, which is the index
> for the "host" p2m -- and thus is often correct.  But the second time
> this race happens, the value will typically be INVALID_ALTP2M, which
> will hit the following BUG:
> 
>     BUG_ON(idx >= MAX_ALTP2M);
> 
> Worse, if for some reason the current altp2m was *not* `0` during this
> window (say, because a toolstack changed the VM to a different view),
> then the accounting of active vcpus for an altp2m will be thrown off.
> 
> Fix this by always updating EPTP_INDEX to the current altp2m index
> when enabling #VE.
> 
> Reported-by: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx>
> Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
> Reviewed-by: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx>
> Tested-by: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx>

Acked-by: Kevin Tian <kevin.tian@xxxxxxxxx>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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