diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2015-05-17 10:20:07 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-05-26 06:40:08 -0400 |
commit | 9f6b8029787bb37170d4535e9fc09158f634282c (patch) | |
tree | 98dd85bdc89d01f819fd75840b4b75c13badb5a6 /virt | |
parent | a47d2b07ea755b1761a93df720d725f464876e72 (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.c | 16 |
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) | |||
734 | static struct kvm_memslots *install_new_memslots(struct kvm *kvm, | 734 | static 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, | |||
966 | int kvm_get_dirty_log(struct kvm *kvm, | 966 | int 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); | |||
1024 | int kvm_get_dirty_log_protect(struct kvm *kvm, | 1026 | int 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; |