[PATCH] powerpc/book3s/64: check for NULL pointer in pgd_alloc()

Michael Ellerman michaele at au1.ibm.com
Mon May 6 21:33:41 AEST 2019


Rick Lindsley <ricklind at linux.vnet.ibm.com> writes:
> When the memset code was added to pgd_alloc(), it failed to consider
> that kmem_cache_alloc() can return NULL. It's uncommon, but not
> impossible under heavy memory contention.

Can you post an oops log? Just so if someone hits it they can possibly
recognise it from the back trace etc.


> Signed-off-by: Rick Lindsley <ricklind at vnet.linux.ibm.com>
> Fixes: cf266dbcd2a7 ("Zero PGD pages on allocation")

I don't have that commit. Did you mean:

Fixes: fc5c2f4a55a2 ("powerpc/mm/hash64: Zero PGD pages on allocation")


cheers

> --- a/arch/powerpc/include/asm/book3s/64/pgalloc.h
> +++ b/arch/powerpc/include/asm/book3s/64/pgalloc.h
> @@ -81,6 +81,10 @@ static inline pgd_t *pgd_alloc(struct mm
>   
> 	pgd = kmem_cache_alloc(PGT_CACHE(PGD_INDEX_SIZE),
> 			       pgtable_gfp_flags(mm, GFP_KERNEL));
> +
> +	if (unlikely(!pgd))
> +		return pgd;
> +
> 	/*
> 	 * Don't scan the PGD for pointers, it contains references to PUDs but
> 	 * those references are not full pointers and so can't be recognised by



More information about the Linuxppc-dev mailing list