Commit ca6ec3bbaaaf5941e970314a2eb3680b9e7e698a
Committed by
Linus Torvalds
1 parent
3fd681b68c
Exists in
smarc-imx_3.14.28_1.0.0_ga
and in
1 other branch
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>
Showing 1 changed file with 8 additions and 3 deletions Side-by-side Diff
arch/arc/include/asm/pgalloc.h
... | ... | @@ -105,11 +105,16 @@ |
105 | 105 | pte_alloc_one(struct mm_struct *mm, unsigned long address) |
106 | 106 | { |
107 | 107 | pgtable_t pte_pg; |
108 | + struct page *page; | |
108 | 109 | |
109 | 110 | pte_pg = __get_free_pages(GFP_KERNEL | __GFP_REPEAT, __get_order_pte()); |
110 | - if (pte_pg) { | |
111 | - memzero((void *)pte_pg, PTRS_PER_PTE * 4); | |
112 | - pgtable_page_ctor(virt_to_page(pte_pg)); | |
111 | + if (!pte_pg) | |
112 | + return 0; | |
113 | + memzero((void *)pte_pg, PTRS_PER_PTE * 4); | |
114 | + page = virt_to_page(pte_pg); | |
115 | + if (!pgtable_page_ctor(page)) { | |
116 | + __free_page(page); | |
117 | + return 0; | |
113 | 118 | } |
114 | 119 | |
115 | 120 | return pte_pg; |