aboutsummaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-05-17 10:20:07 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2015-05-26 06:40:08 -0400
commit9f6b8029787bb37170d4535e9fc09158f634282c (patch)
tree98dd85bdc89d01f819fd75840b4b75c13badb5a6 /virt
parenta47d2b07ea755b1761a93df720d725f464876e72 (diff)
KVM: use kvm_memslots whenever possible
kvm_memslots provides lockdep checking. Use it consistently instead of explicit dereferencing of kvm->memslots. 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.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index e299763ef744..42df724071c0 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -734,7 +734,7 @@ static int check_memory_region_flags(struct kvm_userspace_memory_region *mem)
734static struct kvm_memslots *install_new_memslots(struct kvm *kvm, 734static struct kvm_memslots *install_new_memslots(struct kvm *kvm,
735 struct kvm_memslots *slots) 735 struct kvm_memslots *slots)
736{ 736{
737 struct kvm_memslots *old_memslots = kvm->memslots; 737 struct kvm_memslots *old_memslots = kvm_memslots(kvm);
738 738
739 /* 739 /*
740 * Set the low bit in the generation, which disables SPTE caching 740 * Set the low bit in the generation, which disables SPTE caching
@@ -799,7 +799,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
799 if (mem->guest_phys_addr + mem->memory_size < mem->guest_phys_addr) 799 if (mem->guest_phys_addr + mem->memory_size < mem->guest_phys_addr)
800 goto out; 800 goto out;
801 801
802 slot = id_to_memslot(kvm->memslots, mem->slot); 802 slot = id_to_memslot(kvm_memslots(kvm), mem->slot);
803 base_gfn = mem->guest_phys_addr >> PAGE_SHIFT; 803 base_gfn = mem->guest_phys_addr >> PAGE_SHIFT;
804 npages = mem->memory_size >> PAGE_SHIFT; 804 npages = mem->memory_size >> PAGE_SHIFT;
805 805
@@ -842,7 +842,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
842 if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) { 842 if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) {
843 /* Check for overlaps */ 843 /* Check for overlaps */
844 r = -EEXIST; 844 r = -EEXIST;
845 kvm_for_each_memslot(slot, kvm->memslots) { 845 kvm_for_each_memslot(slot, kvm_memslots(kvm)) {
846 if ((slot->id >= KVM_USER_MEM_SLOTS) || 846 if ((slot->id >= KVM_USER_MEM_SLOTS) ||
847 (slot->id == mem->slot)) 847 (slot->id == mem->slot))
848 continue; 848 continue;
@@ -873,7 +873,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
873 slots = kvm_kvzalloc(sizeof(struct kvm_memslots)); 873 slots = kvm_kvzalloc(sizeof(struct kvm_memslots));
874 if (!slots) 874 if (!slots)
875 goto out_free; 875 goto out_free;
876 memcpy(slots, kvm->memslots, sizeof(struct kvm_memslots)); 876 memcpy(slots, kvm_memslots(kvm), sizeof(struct kvm_memslots));
877 877
878 if ((change == KVM_MR_DELETE) || (change == KVM_MR_MOVE)) { 878 if ((change == KVM_MR_DELETE) || (change == KVM_MR_MOVE)) {
879 slot = id_to_memslot(slots, mem->slot); 879 slot = id_to_memslot(slots, mem->slot);
@@ -966,6 +966,7 @@ static int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,
966int kvm_get_dirty_log(struct kvm *kvm, 966int kvm_get_dirty_log(struct kvm *kvm,
967 struct kvm_dirty_log *log, int *is_dirty) 967 struct kvm_dirty_log *log, int *is_dirty)
968{ 968{
969 struct kvm_memslots *slots;
969 struct kvm_memory_slot *memslot; 970 struct kvm_memory_slot *memslot;
970 int r, i; 971 int r, i;
971 unsigned long n; 972 unsigned long n;
@@ -975,7 +976,8 @@ int kvm_get_dirty_log(struct kvm *kvm,
975 if (log->slot >= KVM_USER_MEM_SLOTS) 976 if (log->slot >= KVM_USER_MEM_SLOTS)
976 goto out; 977 goto out;
977 978
978 memslot = id_to_memslot(kvm->memslots, log->slot); 979 slots = kvm_memslots(kvm);
980 memslot = id_to_memslot(slots, log->slot);
979 r = -ENOENT; 981 r = -ENOENT;
980 if (!memslot->dirty_bitmap) 982 if (!memslot->dirty_bitmap)
981 goto out; 983 goto out;
@@ -1024,6 +1026,7 @@ EXPORT_SYMBOL_GPL(kvm_get_dirty_log);
1024int kvm_get_dirty_log_protect(struct kvm *kvm, 1026int kvm_get_dirty_log_protect(struct kvm *kvm,
1025 struct kvm_dirty_log *log, bool *is_dirty) 1027 struct kvm_dirty_log *log, bool *is_dirty)
1026{ 1028{
1029 struct kvm_memslots *slots;
1027 struct kvm_memory_slot *memslot; 1030 struct kvm_memory_slot *memslot;
1028 int r, i; 1031 int r, i;
1029 unsigned long n; 1032 unsigned long n;
@@ -1034,7 +1037,8 @@ int kvm_get_dirty_log_protect(struct kvm *kvm,
1034 if (log->slot >= KVM_USER_MEM_SLOTS) 1037 if (log->slot >= KVM_USER_MEM_SLOTS)
1035 goto out; 1038 goto out;
1036 1039
1037 memslot = id_to_memslot(kvm->memslots, log->slot); 1040 slots = kvm_memslots(kvm);
1041 memslot = id_to_memslot(slots, log->slot);
1038 1042
1039 dirty_bitmap = memslot->dirty_bitmap; 1043 dirty_bitmap = memslot->dirty_bitmap;
1040 r = -ENOENT; 1044 r = -ENOENT;