KVM: x86/mmu: fix determination of max NPT mapping level for private pages
authorAckerley Tng <ackerleytng@google.com>
Thu, 1 Aug 2024 17:39:55 +0000 (17:39 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 1 Aug 2024 18:13:11 +0000 (14:13 -0400)
The `if (req_max_level)` test was meant ignore req_max_level if
PG_LEVEL_NONE was returned. Hence, this function should return
max_level instead of the ignored req_max_level.

This is only a latent issue for now, since guest_memfd does not
support large pages.

Signed-off-by: Ackerley Tng <ackerleytng@google.com>
Message-ID: <20240801173955.1975034-1-ackerleytng@google.com>
Fixes: f32fb32820b1 ("KVM: x86: Add hook for determining max NPT mapping level")
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/mmu.c

index 43a02891babb23125f52de7fa5373b4bca539b49..928cf84778b0c5470b64c79132f4ecc9906891e0 100644 (file)
@@ -4335,7 +4335,7 @@ static u8 kvm_max_private_mapping_level(struct kvm *kvm, kvm_pfn_t pfn,
        if (req_max_level)
                max_level = min(max_level, req_max_level);
 
-       return req_max_level;
+       return max_level;
 }
 
 static int kvm_faultin_pfn_private(struct kvm_vcpu *vcpu,