kvm: nVMX: Fix fault vector for VMX operation at CPL > 0
authorJim Mattson <jmattson@google.com>
Fri, 27 Jul 2018 16:18:50 +0000 (09:18 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 15 Sep 2018 07:45:32 +0000 (09:45 +0200)
[ Upstream commit 36090bf43a6b835a42f515cb515ff6fa293a25fe ]

The fault that should be raised for a privilege level violation is #GP
rather than #UD.

Fixes: 727ba748e110b4 ("kvm: nVMX: Enforce cpl=0 for VMX instructions")
Signed-off-by: Jim Mattson <jmattson@google.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kvm/vmx.c

index a60d8aafe421472e14566271fa38c253a7335c37..4e5a8e30cc4e8691e309cfff78b9e6b2a1312c6f 100644 (file)
@@ -7590,7 +7590,7 @@ static int handle_vmon(struct kvm_vcpu *vcpu)
 
        /* CPL=0 must be checked manually. */
        if (vmx_get_cpl(vcpu)) {
-               kvm_queue_exception(vcpu, UD_VECTOR);
+               kvm_inject_gp(vcpu, 0);
                return 1;
        }
 
@@ -7654,7 +7654,7 @@ static int handle_vmon(struct kvm_vcpu *vcpu)
 static int nested_vmx_check_permission(struct kvm_vcpu *vcpu)
 {
        if (vmx_get_cpl(vcpu)) {
-               kvm_queue_exception(vcpu, UD_VECTOR);
+               kvm_inject_gp(vcpu, 0);
                return 0;
        }