Commit ca6ec3bbaaaf5941e970314a2eb3680b9e7e698a

Authored by Kirill A. Shutemov
Committed by Linus Torvalds
1 parent 3fd681b68c

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;