arc: handle pgtable_page_ctor() fail
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Acked-by: Vineet Gupta <vgupta@synopsys.com> [for arch/arc bits] Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3fd681b68c
commit
ca6ec3bbaa
@ -105,11 +105,16 @@ static inline pgtable_t
|
|||||||
pte_alloc_one(struct mm_struct *mm, unsigned long address)
|
pte_alloc_one(struct mm_struct *mm, unsigned long address)
|
||||||
{
|
{
|
||||||
pgtable_t pte_pg;
|
pgtable_t pte_pg;
|
||||||
|
struct page *page;
|
||||||
|
|
||||||
pte_pg = __get_free_pages(GFP_KERNEL | __GFP_REPEAT, __get_order_pte());
|
pte_pg = __get_free_pages(GFP_KERNEL | __GFP_REPEAT, __get_order_pte());
|
||||||
if (pte_pg) {
|
if (!pte_pg)
|
||||||
memzero((void *)pte_pg, PTRS_PER_PTE * 4);
|
return 0;
|
||||||
pgtable_page_ctor(virt_to_page(pte_pg));
|
memzero((void *)pte_pg, PTRS_PER_PTE * 4);
|
||||||
|
page = virt_to_page(pte_pg);
|
||||||
|
if (!pgtable_page_ctor(page)) {
|
||||||
|
__free_page(page);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return pte_pg;
|
return pte_pg;
|
||||||
|
Loading…
Reference in New Issue
Block a user