diff options
-rw-r--r-- | arch/x86/kvm/x86.c | 4 | ||||
-rw-r--r-- | include/linux/kvm_host.h | 3 | ||||
-rw-r--r-- | virt/kvm/kvm_main.c | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index be6d54929fa7..f12a52408cda 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -6304,7 +6304,7 @@ void kvm_arch_free_memslot(struct kvm_memory_slot *free, | |||
6304 | 6304 | ||
6305 | for (i = 0; i < KVM_NR_PAGE_SIZES - 1; ++i) { | 6305 | for (i = 0; i < KVM_NR_PAGE_SIZES - 1; ++i) { |
6306 | if (!dont || free->arch.lpage_info[i] != dont->arch.lpage_info[i]) { | 6306 | if (!dont || free->arch.lpage_info[i] != dont->arch.lpage_info[i]) { |
6307 | vfree(free->arch.lpage_info[i]); | 6307 | kvm_kvfree(free->arch.lpage_info[i]); |
6308 | free->arch.lpage_info[i] = NULL; | 6308 | free->arch.lpage_info[i] = NULL; |
6309 | } | 6309 | } |
6310 | } | 6310 | } |
@@ -6323,7 +6323,7 @@ int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages) | |||
6323 | slot->base_gfn, level) + 1; | 6323 | slot->base_gfn, level) + 1; |
6324 | 6324 | ||
6325 | slot->arch.lpage_info[i] = | 6325 | slot->arch.lpage_info[i] = |
6326 | vzalloc(lpages * sizeof(*slot->arch.lpage_info[i])); | 6326 | kvm_kvzalloc(lpages * sizeof(*slot->arch.lpage_info[i])); |
6327 | if (!slot->arch.lpage_info[i]) | 6327 | if (!slot->arch.lpage_info[i]) |
6328 | goto out_free; | 6328 | goto out_free; |
6329 | 6329 | ||
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index c4464356b35b..19b83f6efa49 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
@@ -535,6 +535,9 @@ int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu); | |||
535 | 535 | ||
536 | void kvm_free_physmem(struct kvm *kvm); | 536 | void kvm_free_physmem(struct kvm *kvm); |
537 | 537 | ||
538 | void *kvm_kvzalloc(unsigned long size); | ||
539 | void kvm_kvfree(const void *addr); | ||
540 | |||
538 | #ifndef __KVM_HAVE_ARCH_VM_ALLOC | 541 | #ifndef __KVM_HAVE_ARCH_VM_ALLOC |
539 | static inline struct kvm *kvm_arch_alloc_vm(void) | 542 | static inline struct kvm *kvm_arch_alloc_vm(void) |
540 | { | 543 | { |
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 1148c96a4817..02cb440f802d 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -520,7 +520,7 @@ out_err_nodisable: | |||
520 | * Avoid using vmalloc for a small buffer. | 520 | * Avoid using vmalloc for a small buffer. |
521 | * Should not be used when the size is statically known. | 521 | * Should not be used when the size is statically known. |
522 | */ | 522 | */ |
523 | static void *kvm_kvzalloc(unsigned long size) | 523 | void *kvm_kvzalloc(unsigned long size) |
524 | { | 524 | { |
525 | if (size > PAGE_SIZE) | 525 | if (size > PAGE_SIZE) |
526 | return vzalloc(size); | 526 | return vzalloc(size); |
@@ -528,7 +528,7 @@ static void *kvm_kvzalloc(unsigned long size) | |||
528 | return kzalloc(size, GFP_KERNEL); | 528 | return kzalloc(size, GFP_KERNEL); |
529 | } | 529 | } |
530 | 530 | ||
531 | static void kvm_kvfree(const void *addr) | 531 | void kvm_kvfree(const void *addr) |
532 | { | 532 | { |
533 | if (is_vmalloc_addr(addr)) | 533 | if (is_vmalloc_addr(addr)) |
534 | vfree(addr); | 534 | vfree(addr); |