aboutsummaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-05-18 07:59:39 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2015-05-26 06:40:13 -0400
commit09170a49422bd786be3eac5cec1955257c5a34b7 (patch)
treeab427ac2ef8739a7faf1d34eab7a94f18df37dd5 /virt
parent9f6b8029787bb37170d4535e9fc09158f634282c (diff)
KVM: const-ify uses of struct kvm_userspace_memory_region
Architecture-specific helpers are not supposed to muck with struct kvm_userspace_memory_region contents. Add const to enforce this. In order to eliminate the only write in __kvm_set_memory_region, the cleaning of deleted slots is pulled up from update_memslots to __kvm_set_memory_region. Reviewed-by: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp> Reviewed-by: Radim Krcmar <rkrcmar@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'virt')
-rw-r--r--virt/kvm/kvm_main.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 42df724071c0..fc2dbe1c34fc 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -676,8 +676,6 @@ static void update_memslots(struct kvm_memslots *slots,
676 WARN_ON(mslots[i].id != id); 676 WARN_ON(mslots[i].id != id);
677 if (!new->npages) { 677 if (!new->npages) {
678 WARN_ON(!mslots[i].npages); 678 WARN_ON(!mslots[i].npages);
679 new->base_gfn = 0;
680 new->flags = 0;
681 if (mslots[i].npages) 679 if (mslots[i].npages)
682 slots->used_slots--; 680 slots->used_slots--;
683 } else { 681 } else {
@@ -717,7 +715,7 @@ static void update_memslots(struct kvm_memslots *slots,
717 slots->id_to_index[mslots[i].id] = i; 715 slots->id_to_index[mslots[i].id] = i;
718} 716}
719 717
720static int check_memory_region_flags(struct kvm_userspace_memory_region *mem) 718static int check_memory_region_flags(const struct kvm_userspace_memory_region *mem)
721{ 719{
722 u32 valid_flags = KVM_MEM_LOG_DIRTY_PAGES; 720 u32 valid_flags = KVM_MEM_LOG_DIRTY_PAGES;
723 721
@@ -767,7 +765,7 @@ static struct kvm_memslots *install_new_memslots(struct kvm *kvm,
767 * Must be called holding kvm->slots_lock for write. 765 * Must be called holding kvm->slots_lock for write.
768 */ 766 */
769int __kvm_set_memory_region(struct kvm *kvm, 767int __kvm_set_memory_region(struct kvm *kvm,
770 struct kvm_userspace_memory_region *mem) 768 const struct kvm_userspace_memory_region *mem)
771{ 769{
772 int r; 770 int r;
773 gfn_t base_gfn; 771 gfn_t base_gfn;
@@ -806,9 +804,6 @@ int __kvm_set_memory_region(struct kvm *kvm,
806 if (npages > KVM_MEM_MAX_NR_PAGES) 804 if (npages > KVM_MEM_MAX_NR_PAGES)
807 goto out; 805 goto out;
808 806
809 if (!npages)
810 mem->flags &= ~KVM_MEM_LOG_DIRTY_PAGES;
811
812 new = old = *slot; 807 new = old = *slot;
813 808
814 new.id = mem->slot; 809 new.id = mem->slot;
@@ -834,10 +829,14 @@ int __kvm_set_memory_region(struct kvm *kvm,
834 goto out; 829 goto out;
835 } 830 }
836 } 831 }
837 } else if (old.npages) { 832 } else {
833 if (!old.npages)
834 goto out;
835
838 change = KVM_MR_DELETE; 836 change = KVM_MR_DELETE;
839 } else /* Modify a non-existent slot: disallowed. */ 837 new.base_gfn = 0;
840 goto out; 838 new.flags = 0;
839 }
841 840
842 if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) { 841 if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) {
843 /* Check for overlaps */ 842 /* Check for overlaps */
@@ -944,7 +943,7 @@ out:
944EXPORT_SYMBOL_GPL(__kvm_set_memory_region); 943EXPORT_SYMBOL_GPL(__kvm_set_memory_region);
945 944
946int kvm_set_memory_region(struct kvm *kvm, 945int kvm_set_memory_region(struct kvm *kvm,
947 struct kvm_userspace_memory_region *mem) 946 const struct kvm_userspace_memory_region *mem)
948{ 947{
949 int r; 948 int r;
950 949
@@ -960,6 +959,7 @@ static int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,
960{ 959{
961 if (mem->slot >= KVM_USER_MEM_SLOTS) 960 if (mem->slot >= KVM_USER_MEM_SLOTS)
962 return -EINVAL; 961 return -EINVAL;
962
963 return kvm_set_memory_region(kvm, mem); 963 return kvm_set_memory_region(kvm, mem);
964} 964}
965 965