KVM: MMU: check for present pdptr shadow page in walk_shadow
authorMarcelo Tosatti <mtosatti@redhat.com>
Tue, 9 Dec 2008 15:07:22 +0000 (16:07 +0100)
committerAvi Kivity <avi@redhat.com>
Wed, 31 Dec 2008 14:55:46 +0000 (16:55 +0200)
walk_shadow assumes the caller verified validity of the pdptr pointer in
question, which is not the case for the invlpg handler.

Fixes oops during Solaris 10 install.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/mmu.c

index 863baf7..641c078 100644 (file)
@@ -1269,6 +1269,8 @@ static int walk_shadow(struct kvm_shadow_walk *walker,
        if (level == PT32E_ROOT_LEVEL) {
                shadow_addr = vcpu->arch.mmu.pae_root[(addr >> 30) & 3];
                shadow_addr &= PT64_BASE_ADDR_MASK;
+               if (!shadow_addr)
+                       return 1;
                --level;
        }