On 7/21/2021 05:30, Huang Pei wrote: > +. According to Documentation/vm/split_page_table_lock, handle failure > of pgtable_pmd_page_ctor > > +. Use GFP_KERNEL_ACCOUNT instead of GFP_KERNEL|__GFP_ACCOUNT > > +. Adjust coding style > > Fixes: ed914d48b6a1 ("MIPS: add PMD table accounting into MIPS') > Reported-by: Joshua Kinard <kumba@xxxxxxxxxx> > Signed-off-by: Huang Pei <huangpei@xxxxxxxxxxx> > --- > arch/mips/include/asm/pgalloc.h | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h > index d0cf997b4ba8..139b4050259f 100644 > --- a/arch/mips/include/asm/pgalloc.h > +++ b/arch/mips/include/asm/pgalloc.h > @@ -59,15 +59,20 @@ do { \ > > static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) > { > - pmd_t *pmd = NULL; > + pmd_t *pmd; > struct page *pg; > > - pg = alloc_pages(GFP_KERNEL | __GFP_ACCOUNT, PMD_ORDER); > - if (pg) { > - pgtable_pmd_page_ctor(pg); > - pmd = (pmd_t *)page_address(pg); > - pmd_init((unsigned long)pmd, (unsigned long)invalid_pte_table); > + pg = alloc_pages(GFP_KERNEL_ACCOUNT, PMD_ORDER); > + if (!pg) > + return NULL; > + > + if (!pgtable_pmd_page_ctor(pg)) { > + __free_pages(pg, PMD_ORDER); > + return NULL; > } > + > + pmd = (pmd_t *)page_address(pg); > + pmd_init((unsigned long)pmd, (unsigned long)invalid_pte_table); > return pmd; > } > > Reviewed-by: Joshua Kinard <kumba@xxxxxxxxxx>