Hi all, Today's linux-next merge of the kvm tree got a conflict in: arch/powerpc/kvm/book3s_hv.c between commit: 511d25d6b789f ("KVM: PPC: Book3S: Suppress warnings when allocating too big memory slots") from the kvm tree and commits: 537a17b314930 ("KVM: Let/force architectures to deal with arch specific memslot data") eaaaed137eccb ("KVM: PPC: Avoid referencing userspace memory region in memslot updates") from the kvm tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. diff --cc arch/powerpc/kvm/book3s_hv.c index f64e45d6c0f4c,51e1c29a6fa08..0000000000000 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@@ -4866,21 -4854,17 +4866,22 @@@ 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) { - unsigned long size = array_size(npages, sizeof(*slot->arch.rmap)); - new->arch.rmap = vzalloc(array_size(new->npages, - sizeof(*new->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;