powerpc/mm/hugetlb: Fix kernel crash if we fail to allocate page table caches
authorAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Tue, 28 May 2019 05:36:25 +0000 (11:06 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 4 Jul 2019 14:48:00 +0000 (00:48 +1000)
We only check for hugetlb allocations, because with hugetlb we do conditional
registration. For PGD/PUD/PMD levels we register them always in
pgtable_cache_init.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/hugetlbpage.c

index 1de0f43a68e5822dd9c2fe172bcaab162b69d5de..f55dc110f2ad61641bcdc063c5b6c75791e4e672 100644 (file)
@@ -61,12 +61,17 @@ static int __hugepte_alloc(struct mm_struct *mm, hugepd_t *hpdp,
                num_hugepd = 1;
        }
 
+       if (!cachep) {
+               WARN_ONCE(1, "No page table cache created for hugetlb tables");
+               return -ENOMEM;
+       }
+
        new = kmem_cache_alloc(cachep, pgtable_gfp_flags(mm, GFP_KERNEL));
 
        BUG_ON(pshift > HUGEPD_SHIFT_MASK);
        BUG_ON((unsigned long)new & HUGEPD_SHIFT_MASK);
 
-       if (! new)
+       if (!new)
                return -ENOMEM;
 
        /*