aboutsummaryrefslogtreecommitdiffstats
path: root/arch/openrisc/include/asm/pgalloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/openrisc/include/asm/pgalloc.h')
-rw-r--r--arch/openrisc/include/asm/pgalloc.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/openrisc/include/asm/pgalloc.h b/arch/openrisc/include/asm/pgalloc.h
index 05c39ecd2efd..21484e5b9e9a 100644
--- a/arch/openrisc/include/asm/pgalloc.h
+++ b/arch/openrisc/include/asm/pgalloc.h
@@ -78,8 +78,13 @@ static inline struct page *pte_alloc_one(struct mm_struct *mm,
78{ 78{
79 struct page *pte; 79 struct page *pte;
80 pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT, 0); 80 pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT, 0);
81 if (pte) 81 if (!pte)
82 clear_page(page_address(pte)); 82 return NULL;
83 clear_page(page_address(pte));
84 if (!pgtable_page_ctor(pte)) {
85 __free_page(pte);
86 return NULL;
87 }
83 return pte; 88 return pte;
84} 89}
85 90
@@ -90,6 +95,7 @@ static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
90 95
91static inline void pte_free(struct mm_struct *mm, struct page *pte) 96static inline void pte_free(struct mm_struct *mm, struct page *pte)
92{ 97{
98 pgtable_page_dtor(pte);
93 __free_page(pte); 99 __free_page(pte);
94} 100}
95 101