|
@@ -37,11 +37,15 @@ pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address)
|
|
|
#else
|
|
#else
|
|
|
page = alloc_pages(GFP_KERNEL|__GFP_REPEAT, 0);
|
|
page = alloc_pages(GFP_KERNEL|__GFP_REPEAT, 0);
|
|
|
#endif
|
|
#endif
|
|
|
- if (page) {
|
|
|
|
|
- clear_highpage(page);
|
|
|
|
|
- pgtable_page_ctor(page);
|
|
|
|
|
- flush_dcache_page(page);
|
|
|
|
|
|
|
+ if (!page)
|
|
|
|
|
+ return NULL;
|
|
|
|
|
+
|
|
|
|
|
+ clear_highpage(page);
|
|
|
|
|
+ if (!pgtable_page_ctor(page)) {
|
|
|
|
|
+ __free_page(page);
|
|
|
|
|
+ return NULL;
|
|
|
}
|
|
}
|
|
|
|
|
+ flush_dcache_page(page);
|
|
|
return page;
|
|
return page;
|
|
|
}
|
|
}
|
|
|
|
|
|