diff options
-rw-r--r-- | arch/unicore32/include/asm/pgalloc.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/unicore32/include/asm/pgalloc.h b/arch/unicore32/include/asm/pgalloc.h index 0213e373a895..2e02d1356fdf 100644 --- a/arch/unicore32/include/asm/pgalloc.h +++ b/arch/unicore32/include/asm/pgalloc.h | |||
@@ -51,12 +51,14 @@ pte_alloc_one(struct mm_struct *mm, unsigned long addr) | |||
51 | struct page *pte; | 51 | struct page *pte; |
52 | 52 | ||
53 | pte = alloc_pages(PGALLOC_GFP, 0); | 53 | pte = alloc_pages(PGALLOC_GFP, 0); |
54 | if (pte) { | 54 | if (!pte) |
55 | if (!PageHighMem(pte)) { | 55 | return NULL; |
56 | void *page = page_address(pte); | 56 | if (!PageHighMem(pte)) { |
57 | clean_dcache_area(page, PTRS_PER_PTE * sizeof(pte_t)); | 57 | void *page = page_address(pte); |
58 | } | 58 | clean_dcache_area(page, PTRS_PER_PTE * sizeof(pte_t)); |
59 | pgtable_page_ctor(pte); | 59 | } |
60 | if (!pgtable_page_ctor(pte)) { | ||
61 | __free_page(pte); | ||
60 | } | 62 | } |
61 | 63 | ||
62 | return pte; | 64 | return pte; |