|
@@ -51,12 +51,14 @@ pte_alloc_one(struct mm_struct *mm, unsigned long addr)
|
|
|
struct page *pte;
|
|
|
|
|
|
pte = alloc_pages(PGALLOC_GFP, 0);
|
|
|
- if (pte) {
|
|
|
- if (!PageHighMem(pte)) {
|
|
|
- void *page = page_address(pte);
|
|
|
- clean_dcache_area(page, PTRS_PER_PTE * sizeof(pte_t));
|
|
|
- }
|
|
|
- pgtable_page_ctor(pte);
|
|
|
+ if (!pte)
|
|
|
+ return NULL;
|
|
|
+ if (!PageHighMem(pte)) {
|
|
|
+ void *page = page_address(pte);
|
|
|
+ clean_dcache_area(page, PTRS_PER_PTE * sizeof(pte_t));
|
|
|
+ }
|
|
|
+ if (!pgtable_page_ctor(pte)) {
|
|
|
+ __free_page(pte);
|
|
|
}
|
|
|
|
|
|
return pte;
|