diff options
Diffstat (limited to 'virt/kvm/kvm_main.c')
| -rw-r--r-- | virt/kvm/kvm_main.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index a2214d9609bd..cc6a25d95fbf 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
| @@ -471,7 +471,7 @@ static struct kvm *kvm_create_vm(unsigned long type) | |||
| 471 | BUILD_BUG_ON(KVM_MEM_SLOTS_NUM > SHRT_MAX); | 471 | BUILD_BUG_ON(KVM_MEM_SLOTS_NUM > SHRT_MAX); |
| 472 | 472 | ||
| 473 | r = -ENOMEM; | 473 | r = -ENOMEM; |
| 474 | kvm->memslots = kzalloc(sizeof(struct kvm_memslots), GFP_KERNEL); | 474 | kvm->memslots = kvm_kvzalloc(sizeof(struct kvm_memslots)); |
| 475 | if (!kvm->memslots) | 475 | if (!kvm->memslots) |
| 476 | goto out_err_no_srcu; | 476 | goto out_err_no_srcu; |
| 477 | 477 | ||
| @@ -522,7 +522,7 @@ out_err_no_srcu: | |||
| 522 | out_err_no_disable: | 522 | out_err_no_disable: |
| 523 | for (i = 0; i < KVM_NR_BUSES; i++) | 523 | for (i = 0; i < KVM_NR_BUSES; i++) |
| 524 | kfree(kvm->buses[i]); | 524 | kfree(kvm->buses[i]); |
| 525 | kfree(kvm->memslots); | 525 | kvfree(kvm->memslots); |
| 526 | kvm_arch_free_vm(kvm); | 526 | kvm_arch_free_vm(kvm); |
| 527 | return ERR_PTR(r); | 527 | return ERR_PTR(r); |
| 528 | } | 528 | } |
| @@ -578,7 +578,7 @@ static void kvm_free_physmem(struct kvm *kvm) | |||
| 578 | kvm_for_each_memslot(memslot, slots) | 578 | kvm_for_each_memslot(memslot, slots) |
| 579 | kvm_free_physmem_slot(kvm, memslot, NULL); | 579 | kvm_free_physmem_slot(kvm, memslot, NULL); |
| 580 | 580 | ||
| 581 | kfree(kvm->memslots); | 581 | kvfree(kvm->memslots); |
| 582 | } | 582 | } |
| 583 | 583 | ||
| 584 | static void kvm_destroy_devices(struct kvm *kvm) | 584 | static void kvm_destroy_devices(struct kvm *kvm) |
| @@ -871,10 +871,10 @@ int __kvm_set_memory_region(struct kvm *kvm, | |||
| 871 | goto out_free; | 871 | goto out_free; |
| 872 | } | 872 | } |
| 873 | 873 | ||
| 874 | slots = kmemdup(kvm->memslots, sizeof(struct kvm_memslots), | 874 | slots = kvm_kvzalloc(sizeof(struct kvm_memslots)); |
| 875 | GFP_KERNEL); | ||
| 876 | if (!slots) | 875 | if (!slots) |
| 877 | goto out_free; | 876 | goto out_free; |
| 877 | memcpy(slots, kvm->memslots, sizeof(struct kvm_memslots)); | ||
| 878 | 878 | ||
| 879 | if ((change == KVM_MR_DELETE) || (change == KVM_MR_MOVE)) { | 879 | if ((change == KVM_MR_DELETE) || (change == KVM_MR_MOVE)) { |
| 880 | slot = id_to_memslot(slots, mem->slot); | 880 | slot = id_to_memslot(slots, mem->slot); |
| @@ -917,7 +917,7 @@ int __kvm_set_memory_region(struct kvm *kvm, | |||
| 917 | kvm_arch_commit_memory_region(kvm, mem, &old, change); | 917 | kvm_arch_commit_memory_region(kvm, mem, &old, change); |
| 918 | 918 | ||
| 919 | kvm_free_physmem_slot(kvm, &old, &new); | 919 | kvm_free_physmem_slot(kvm, &old, &new); |
| 920 | kfree(old_memslots); | 920 | kvfree(old_memslots); |
| 921 | 921 | ||
| 922 | /* | 922 | /* |
| 923 | * IOMMU mapping: New slots need to be mapped. Old slots need to be | 923 | * IOMMU mapping: New slots need to be mapped. Old slots need to be |
| @@ -936,7 +936,7 @@ int __kvm_set_memory_region(struct kvm *kvm, | |||
| 936 | return 0; | 936 | return 0; |
| 937 | 937 | ||
| 938 | out_slots: | 938 | out_slots: |
| 939 | kfree(slots); | 939 | kvfree(slots); |
| 940 | out_free: | 940 | out_free: |
| 941 | kvm_free_physmem_slot(kvm, &new, &old); | 941 | kvm_free_physmem_slot(kvm, &new, &old); |
| 942 | out: | 942 | out: |
