diff options
Diffstat (limited to 'arch/mips/mm/ioremap.c')
| -rw-r--r-- | arch/mips/mm/ioremap.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/mips/mm/ioremap.c b/arch/mips/mm/ioremap.c index 1601d90b087b..8317f337a86e 100644 --- a/arch/mips/mm/ioremap.c +++ b/arch/mips/mm/ioremap.c @@ -78,11 +78,15 @@ static int remap_area_pages(unsigned long address, phys_addr_t phys_addr,  	flush_cache_all();  	BUG_ON(address >= end);  	do { +		p4d_t *p4d;  		pud_t *pud;  		pmd_t *pmd;  		error = -ENOMEM; -		pud = pud_alloc(&init_mm, dir, address); +		p4d = p4d_alloc(&init_mm, dir, address); +		if (!p4d) +			break; +		pud = pud_alloc(&init_mm, p4d, address);  		if (!pud)  			break;  		pmd = pmd_alloc(&init_mm, pud, address);  |