diff options
Diffstat (limited to 'arch/arm/include/asm/pgalloc.h')
| -rw-r--r-- | arch/arm/include/asm/pgalloc.h | 12 | 
1 files changed, 7 insertions, 5 deletions
diff --git a/arch/arm/include/asm/pgalloc.h b/arch/arm/include/asm/pgalloc.h index 943504f53f57..78a779361682 100644 --- a/arch/arm/include/asm/pgalloc.h +++ b/arch/arm/include/asm/pgalloc.h @@ -102,12 +102,14 @@ pte_alloc_one(struct mm_struct *mm, unsigned long addr)  #else  	pte = alloc_pages(PGALLOC_GFP, 0);  #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;  }  |