Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f84c914b authored by Kirill A. Shutemov's avatar Kirill A. Shutemov Committed by Linus Torvalds
Browse files

m68k: handle pgtable_page_ctor() fail



Signed-off-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7251ab6b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -56,6 +56,10 @@ static inline struct page *pte_alloc_one(struct mm_struct *mm,

	if (!page)
		return NULL;
	if (!pgtable_page_ctor(page)) {
		__free_page(page);
		return NULL;
	}

	pte = kmap(page);
	if (pte) {
+6 −2
Original line number Diff line number Diff line
@@ -29,18 +29,22 @@ static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)

static inline pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address)
{
	struct page *page = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0);
	struct page *page;
	pte_t *pte;

	page = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0);
	if(!page)
		return NULL;
	if (!pgtable_page_ctor(page)) {
		__free_page(page);
		return NULL;
	}

	pte = kmap(page);
	__flush_page_to_ram(pte);
	flush_tlb_kernel_page(pte);
	nocache_page(pte);
	kunmap(page);
	pgtable_page_ctor(page);
	return page;
}

+4 −1
Original line number Diff line number Diff line
@@ -59,7 +59,10 @@ static inline pgtable_t pte_alloc_one(struct mm_struct *mm,
		return NULL;

	clear_highpage(page);
	pgtable_page_ctor(page);
	if (!pgtable_page_ctor(page)) {
		__free_page(page);
		return NULL;
	}
	return page;

}