Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37b54408 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Christoffer Dall
Browse files

arm/arm64: KVM: fix potential NULL dereference in user_mem_abort()



Handle the potential NULL return value of find_vma_intersection()
before dereferencing it.

Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
parent e9e8578b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -776,6 +776,12 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
	/* Let's check if we will get back a huge page backed by hugetlbfs */
	down_read(&current->mm->mmap_sem);
	vma = find_vma_intersection(current->mm, hva, hva + 1);
	if (unlikely(!vma)) {
		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
		up_read(&current->mm->mmap_sem);
		return -EFAULT;
	}

	if (is_vm_hugetlb_page(vma)) {
		hugetlb = true;
		gfn = (fault_ipa & PMD_MASK) >> PAGE_SHIFT;