diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2015-05-18 07:59:39 -0400 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-05-26 06:40:13 -0400 |
| commit | 09170a49422bd786be3eac5cec1955257c5a34b7 (patch) | |
| tree | ab427ac2ef8739a7faf1d34eab7a94f18df37dd5 /virt | |
| parent | 9f6b8029787bb37170d4535e9fc09158f634282c (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.c | 22 |
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 | ||
| 720 | static int check_memory_region_flags(struct kvm_userspace_memory_region *mem) | 718 | static 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 | */ |
| 769 | int __kvm_set_memory_region(struct kvm *kvm, | 767 | int __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: | |||
| 944 | EXPORT_SYMBOL_GPL(__kvm_set_memory_region); | 943 | EXPORT_SYMBOL_GPL(__kvm_set_memory_region); |
| 945 | 944 | ||
| 946 | int kvm_set_memory_region(struct kvm *kvm, | 945 | int 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 | ||
