diff options
Diffstat (limited to 'arch/m68k/include/asm/motorola_pgalloc.h')
| -rw-r--r-- | arch/m68k/include/asm/motorola_pgalloc.h | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/m68k/include/asm/motorola_pgalloc.h b/arch/m68k/include/asm/motorola_pgalloc.h index 2f02f264e69..24bcba496c7 100644 --- a/arch/m68k/include/asm/motorola_pgalloc.h +++ b/arch/m68k/include/asm/motorola_pgalloc.h @@ -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;  }  | 
