MIPS: check return value of pgtable_pmd_page_ctor
[ Upstream commit 6aa32467299e9e12280a6aec9dbc21bf2db830b0 ] +. 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> Reviewed-by: Joshua Kinard <kumba@gentoo.org> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
9b2b2f0771
commit
f93b7b0000
@@ -59,15 +59,20 @@ do { \
|
|||||||
|
|
||||||
static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
|
static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
|
||||||
{
|
{
|
||||||
pmd_t *pmd = NULL;
|
pmd_t *pmd;
|
||||||
struct page *pg;
|
struct page *pg;
|
||||||
|
|
||||||
pg = alloc_pages(GFP_KERNEL | __GFP_ACCOUNT, PMD_ORDER);
|
pg = alloc_pages(GFP_KERNEL_ACCOUNT, PMD_ORDER);
|
||||||
if (pg) {
|
if (!pg)
|
||||||
pgtable_pmd_page_ctor(pg);
|
return NULL;
|
||||||
|
|
||||||
|
if (!pgtable_pmd_page_ctor(pg)) {
|
||||||
|
__free_pages(pg, PMD_ORDER);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
pmd = (pmd_t *)page_address(pg);
|
pmd = (pmd_t *)page_address(pg);
|
||||||
pmd_init((unsigned long)pmd, (unsigned long)invalid_pte_table);
|
pmd_init((unsigned long)pmd, (unsigned long)invalid_pte_table);
|
||||||
}
|
|
||||||
return pmd;
|
return pmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user