Message ID | 20210721093045.2474837-2-huangpei@loongson.cn (mailing list archive) |
---|---|
State | Accepted |
Commit | 6aa32467299e9e12280a6aec9dbc21bf2db830b0 |
Headers | show |
Series | MIPS: check return value of pgtable_pmd_page_ctor | expand |
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@gentoo.org> > Signed-off-by: Huang Pei <huangpei@loongson.cn> > --- > 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@gentoo.org>
On Wed, Jul 21, 2021 at 05:30:45PM +0800, 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@gentoo.org> > Signed-off-by: Huang Pei <huangpei@loongson.cn> > --- > arch/mips/include/asm/pgalloc.h | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) applied to mips-fixes. Thomas.
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; }
+. 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@gentoo.org> Signed-off-by: Huang Pei <huangpei@loongson.cn> --- arch/mips/include/asm/pgalloc.h | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)