OSDN Git Service

Merge branch 'topic/ppc-kvm' of https://git.kernel.org/pub/scm/linux/kernel/git/power...
authorPaolo Bonzini <pbonzini@redhat.com>
Sun, 19 Dec 2021 14:27:21 +0000 (15:27 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Sun, 19 Dec 2021 14:27:21 +0000 (15:27 +0100)
Fix conflicts between memslot overhaul and commit 511d25d6b789f ("KVM:
PPC: Book3S: Suppress warnings when allocating too big memory slots")
from the powerpc tree.

1  2 
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/include/asm/kvm_ppc.h
arch/powerpc/kvm/Kconfig
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/kvm/book3s_hv_nested.c

Simple merge
Simple merge
Simple merge
@@@ -4854,17 -4866,21 +4866,21 @@@ static void kvmppc_core_free_memslot_hv
  }
  
  static int kvmppc_core_prepare_memory_region_hv(struct kvm *kvm,
 -                                      struct kvm_memory_slot *slot,
 -                                      const struct kvm_userspace_memory_region *mem,
 -                                      enum kvm_mr_change change)
 +                              const struct kvm_memory_slot *old,
 +                              struct kvm_memory_slot *new,
 +                              enum kvm_mr_change change)
  {
 -      unsigned long npages = mem->memory_size >> PAGE_SHIFT;
 -
        if (change == KVM_MR_CREATE) {
-               new->arch.rmap = vzalloc(array_size(new->npages,
-                                         sizeof(*new->arch.rmap)));
 -              unsigned long size = array_size(npages, sizeof(*slot->arch.rmap));
++              unsigned long size = array_size(new->npages, sizeof(*new->arch.rmap));
+               if ((size >> PAGE_SHIFT) > totalram_pages())
+                       return -ENOMEM;
 -              slot->arch.rmap = vzalloc(size);
 -              if (!slot->arch.rmap)
++              new->arch.rmap = vzalloc(size);
 +              if (!new->arch.rmap)
                        return -ENOMEM;
 +      } else if (change != KVM_MR_DELETE) {
 +              new->arch.rmap = old->arch.rmap;
        }
  
        return 0;
Simple merge