diff options
author | Scott Wood <scottwood@freescale.com> | 2013-11-21 18:26:42 -0600 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2013-11-22 16:57:29 -0600 |
commit | d742aa152f27448d39ce65fb829e396d10cd63a9 (patch) | |
tree | 51b626c0dc20c3c2992987929860a6d8c19a3003 /arch/powerpc/mm/tlb_nohash.c | |
parent | 53567cf3c28d11f58927e5d4946a744ec2fbf06e (diff) | |
download | linux-stable-d742aa152f27448d39ce65fb829e396d10cd63a9.tar.gz linux-stable-d742aa152f27448d39ce65fb829e396d10cd63a9.tar.bz2 linux-stable-d742aa152f27448d39ce65fb829e396d10cd63a9.zip |
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: Scott Wood <scottwood@freescale.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Diffstat (limited to 'arch/powerpc/mm/tlb_nohash.c')
-rw-r--r-- | arch/powerpc/mm/tlb_nohash.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/mm/tlb_nohash.c b/arch/powerpc/mm/tlb_nohash.c index 41cd68dee681..358d74303138 100644 --- a/arch/powerpc/mm/tlb_nohash.c +++ b/arch/powerpc/mm/tlb_nohash.c @@ -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 |