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

Commit d742aa15 authored by Scott Wood's avatar Scott Wood
Browse files

powerpc/booke: Only check for hugetlb in flush if vma != NULL

And in flush_hugetlb_page(), don't check whether vma is NULL after
we've already dereferenced it.

This was found by Dan using static analysis as described here:
https://lists.ozlabs.org/pipermail/linuxppc-dev/2013-November/113161.html



We currently get away with this because the callers that currently pass
NULL for vma seem to be 32-bit-only (e.g. highmem, and
CONFIG_DEBUG_PGALLOC in pgtable_32.c)  Hugetlb is currently 64-bit only,
so we never saw a NULL vma here.

Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
parent 53567cf3
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -117,6 +117,5 @@ void flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
	struct hstate *hstate = hstate_file(vma->vm_file);
	unsigned long tsize = huge_page_shift(hstate) - 10;

	__flush_tlb_page(vma ? vma->vm_mm : NULL, vmaddr, tsize, 0);

	__flush_tlb_page(vma->vm_mm, vmaddr, tsize, 0);
}
+1 −1
Original line number Diff line number Diff line
@@ -305,7 +305,7 @@ void __flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr,
void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
{
#ifdef CONFIG_HUGETLB_PAGE
	if (is_vm_hugetlb_page(vma))
	if (vma && is_vm_hugetlb_page(vma))
		flush_hugetlb_page(vma, vmaddr);
#endif