Drop the should-be-impossible check on an existing memslot not having any
pages. Ever since commit 0577d1abe704 ("KVM: Terminate memslot walks via
used_slots"), KVM returns NULL if there is no memslot. Before that, KVM
pre-allocated all possible memslots and relied on npages==0 to denote "no
valid memslot". The check on npages was deliberately left behind to aid
debug, but that was over six years ago.
Side topic, there is no need to check for KVM_MEMSLOT_INVALID as it
should be impossible to see an invalid slot while holding slots_lock, and
more importantly, invalid slots preserve their original size, i.e. the
npages check has nothing to do with to-be-deleted/moved memslots.
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
arch/x86/kvm/x86.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 32563a91fba9..cb8b60da5b11 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -10043,7 +10043,7 @@ void __user * __x86_set_memory_region(struct kvm *kvm, int id, gpa_t gpa,
slot = id_to_memslot(slots, id);
if (size) {
- if (slot && slot->npages)
+ if (slot)
return ERR_PTR_USR(-EEXIST);
/*@@ -10055,7 +10055,7 @@ void __user * __x86_set_memory_region(struct kvm *kvm, int id, gpa_t gpa,
if (IS_ERR_VALUE(hva))
return (void __user *)hva;
} else {
- if (!slot || !slot->npages)
+ if (!slot)
return NULL;
old_npages = slot->npages;--
2.56.0.385.gac671c819a-goog