summaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorSean Christopherson <seanjc@google.com>2021-12-06 20:54:08 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2021-12-08 04:24:17 -0500
commit47ea7d900b1cc66ec7a35a8b173ed16b01f9781b (patch)
treee53ed5937755500dfa24b71a4fa42d05cc39efb4 /virt
parentafa319a54a8c760ba59683cd3c4318635049a664 (diff)
downloadlinux-47ea7d900b1cc66ec7a35a8b173ed16b01f9781b.tar.bz2
KVM: Open code kvm_delete_memslot() into its only caller
Fold kvm_delete_memslot() into __kvm_set_memory_region() to free up the "kvm_delete_memslot()" name for use in a future helper. The delete logic isn't so complex/long that it truly needs a helper, and it will be simplified a wee bit further in upcoming commits. No functional change intended. Signed-off-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Message-Id: <2887631c31a82947faa488ab72f55f8c68b7c194.1638817638.git.maciej.szmigiero@oracle.com>
Diffstat (limited to 'virt')
-rw-r--r--virt/kvm/kvm_main.c42
1 files changed, 17 insertions, 25 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 538fd57ea339..af2730858ebd 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -1668,29 +1668,6 @@ out_slots:
return r;
}
-static int kvm_delete_memslot(struct kvm *kvm,
- const struct kvm_userspace_memory_region *mem,
- struct kvm_memory_slot *old, int as_id)
-{
- struct kvm_memory_slot new;
-
- if (!old->npages)
- return -EINVAL;
-
- if (WARN_ON_ONCE(kvm->nr_memslot_pages < old->npages))
- return -EIO;
-
- memset(&new, 0, sizeof(new));
- new.id = old->id;
- /*
- * This is only for debugging purpose; it should never be referenced
- * for a removed memslot.
- */
- new.as_id = as_id;
-
- return kvm_set_memslot(kvm, mem, &new, as_id, KVM_MR_DELETE);
-}
-
/*
* Allocate some memory and give it an address in the guest physical address
* space.
@@ -1747,8 +1724,23 @@ int __kvm_set_memory_region(struct kvm *kvm,
old.id = id;
}
- if (!mem->memory_size)
- return kvm_delete_memslot(kvm, mem, &old, as_id);
+ if (!mem->memory_size) {
+ if (!old.npages)
+ return -EINVAL;
+
+ if (WARN_ON_ONCE(kvm->nr_memslot_pages < old.npages))
+ return -EIO;
+
+ memset(&new, 0, sizeof(new));
+ new.id = id;
+ /*
+ * This is only for debugging purpose; it should never be
+ * referenced for a removed memslot.
+ */
+ new.as_id = as_id;
+
+ return kvm_set_memslot(kvm, mem, &new, as_id, KVM_MR_DELETE);
+ }
new.as_id = as_id;
new.id = id;