summaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/vmx.c
diff options
context:
space:
mode:
authorJim Mattson <jmattson@google.com>2018-05-29 09:11:32 -0700
committerPaolo Bonzini <pbonzini@redhat.com>2018-06-04 17:52:51 +0200
commita943ac50d10aac96dca63d0460365a699d41fdd0 (patch)
tree7c95e61065077dd80b39e5f09a1e117a8a9e37c9 /arch/x86/kvm/vmx.c
parentc5ce8235cffa00c207e24210329094d7634bb467 (diff)
downloadblackbird-obmc-linux-a943ac50d10aac96dca63d0460365a699d41fdd0.tar.gz
blackbird-obmc-linux-a943ac50d10aac96dca63d0460365a699d41fdd0.zip
kvm: nVMX: Restrict VMX capability MSR changes
Disallow changes to the VMX capability MSRs while the vCPU is in VMX operation. Although this does break the existing API, it helps to avoid some potentially tricky situations for which there is no architected behavior. Signed-off-by: Jim Mattson <jmattson@google.com> Reviewed-by: Krish Sadhukhan <krish.sadhukhan@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/x86/kvm/vmx.c')
-rw-r--r--arch/x86/kvm/vmx.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index aff0f3ee6a1d..55f86eebc780 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -3538,6 +3538,13 @@ static int vmx_set_vmx_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
+ /*
+ * Don't allow changes to the VMX capability MSRs while the vCPU
+ * is in VMX operation.
+ */
+ if (vmx->nested.vmxon)
+ return -EBUSY;
+
switch (msr_index) {
case MSR_IA32_VMX_BASIC:
return vmx_restore_vmx_basic(vmx, data);
OpenPOWER on IntegriCloud