]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
KVM: nVMX: vmread should not set rflags to specify success in case of #PF
authorMiaohe Lin <linmiaohe@huawei.com>
Sat, 28 Dec 2019 06:25:24 +0000 (14:25 +0800)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 22 May 2020 20:19:30 +0000 (21:19 +0100)
commit a4d956b9390418623ae5d07933e2679c68b6f83c upstream.

In case writing to vmread destination operand result in a #PF, vmread
should not call nested_vmx_succeed() to set rflags to specify success.
Similar to as done in VMPTRST (See handle_vmptrst()).

Reviewed-by: Liran Alon <liran.alon@oracle.com>
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
[bwh: Backported to 3.16: adjust filename, context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
arch/x86/kvm/vmx.c

index 1faaa78505f4a6afbb093dcb05f455999efe6f8f..0566fd97b58e8dc5229bcfede73ebaa93eca0602 100644 (file)
@@ -6455,8 +6455,10 @@ static int handle_vmread(struct kvm_vcpu *vcpu)
                /* _system ok, as nested_vmx_check_permission verified cpl=0 */
                if (kvm_write_guest_virt_system(vcpu, gva, &field_value,
                                                (is_long_mode(vcpu) ? 8 : 4),
-                                               &e))
+                                               &e)) {
                        kvm_inject_page_fault(vcpu, &e);
+                       return 1;
+               }
        }
 
        nested_vmx_succeed(vcpu);