|
@@ -122,8 +122,13 @@ static inline struct page *pte_alloc_one(struct mm_struct *mm,
|
|
|
#endif
|
|
|
|
|
|
ptepage = alloc_pages(flags, 0);
|
|
|
- if (ptepage)
|
|
|
- clear_highpage(ptepage);
|
|
|
+ if (!ptepage)
|
|
|
+ return NULL;
|
|
|
+ clear_highpage(ptepage);
|
|
|
+ if (!pgtable_page_ctor(ptepage)) {
|
|
|
+ __free_page(ptepage);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
return ptepage;
|
|
|
}
|
|
|
|
|
@@ -158,8 +163,9 @@ extern inline void pte_free_slow(struct page *ptepage)
|
|
|
__free_page(ptepage);
|
|
|
}
|
|
|
|
|
|
-extern inline void pte_free(struct mm_struct *mm, struct page *ptepage)
|
|
|
+static inline void pte_free(struct mm_struct *mm, struct page *ptepage)
|
|
|
{
|
|
|
+ pgtable_page_dtor(ptepage);
|
|
|
__free_page(ptepage);
|
|
|
}
|
|
|
|