KVM: MMU: Fix 32 bit legacy paging with NPT
[cascardo/linux.git] / arch / x86 / kvm / mmu.c
index d2dad65..b2136f9 100644 (file)
@@ -2387,6 +2387,10 @@ static int mmu_alloc_roots(struct kvm_vcpu *vcpu)
                return 0;
        }
        direct = !is_paging(vcpu);
+
+       if (mmu_check_root(vcpu, root_gfn))
+               return 1;
+
        for (i = 0; i < 4; ++i) {
                hpa_t root = vcpu->arch.mmu.pae_root[i];
 
@@ -2398,10 +2402,10 @@ static int mmu_alloc_roots(struct kvm_vcpu *vcpu)
                                continue;
                        }
                        root_gfn = pdptr >> PAGE_SHIFT;
+                       if (mmu_check_root(vcpu, root_gfn))
+                               return 1;
                } else if (vcpu->arch.mmu.root_level == 0)
                        root_gfn = 0;
-               if (mmu_check_root(vcpu, root_gfn))
-                       return 1;
                if (tdp_enabled) {
                        direct = 1;
                        root_gfn = i << 30;