|
@@ -102,12 +102,14 @@ pte_alloc_one(struct mm_struct *mm, unsigned long addr)
|
|
#else
|
|
#else
|
|
pte = alloc_pages(PGALLOC_GFP, 0);
|
|
pte = alloc_pages(PGALLOC_GFP, 0);
|
|
#endif
|
|
#endif
|
|
- if (pte) {
|
|
|
|
- if (!PageHighMem(pte))
|
|
|
|
- clean_pte_table(page_address(pte));
|
|
|
|
- pgtable_page_ctor(pte);
|
|
|
|
|
|
+ if (!pte)
|
|
|
|
+ return NULL;
|
|
|
|
+ if (!PageHighMem(pte))
|
|
|
|
+ clean_pte_table(page_address(pte));
|
|
|
|
+ if (!pgtable_page_ctor(pte)) {
|
|
|
|
+ __free_page(pte);
|
|
|
|
+ return NULL;
|
|
}
|
|
}
|
|
-
|
|
|
|
return pte;
|
|
return pte;
|
|
}
|
|
}
|
|
|
|
|