KVM: nVMX: Trap unconditionally if msr bitmap access fails
authorJan Kiszka <jan.kiszka@siemens.com>
Thu, 14 Feb 2013 18:46:27 +0000 (19:46 +0100)
committerMarcelo Tosatti <mtosatti@redhat.com>
Fri, 22 Feb 2013 03:50:45 +0000 (00:50 -0300)
This avoids basing decisions on uninitialized variables, potentially
leaking kernel data to the L1 guest.

Reviewed-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kvm/vmx.c

index b4ce43c827484865ce97a7a065839a8031c423f1..c1b3041a1f8648d71efb78ef7c1676a8310a1071 100644 (file)
@@ -5985,7 +5985,8 @@ static bool nested_vmx_exit_handled_msr(struct kvm_vcpu *vcpu,
        /* Then read the msr_index'th bit from this bitmap: */
        if (msr_index < 1024*8) {
                unsigned char b;
-               kvm_read_guest(vcpu->kvm, bitmap + msr_index/8, &b, 1);
+               if (kvm_read_guest(vcpu->kvm, bitmap + msr_index/8, &b, 1))
+                       return 1;
                return 1 & (b >> (msr_index & 7));
        } else
                return 1; /* let L1 handle the wrong parameter */