diff options
Diffstat (limited to 'lib/ioremap.c')
| -rw-r--r-- | lib/ioremap.c | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/lib/ioremap.c b/lib/ioremap.c index b808a390e4c3..54e5bbaa3200 100644 --- a/lib/ioremap.c +++ b/lib/ioremap.c @@ -91,7 +91,8 @@ static inline int ioremap_pmd_range(pud_t *pud, unsigned long addr,  		if (ioremap_pmd_enabled() &&  		    ((next - addr) == PMD_SIZE) && -		    IS_ALIGNED(phys_addr + addr, PMD_SIZE)) { +		    IS_ALIGNED(phys_addr + addr, PMD_SIZE) && +		    pmd_free_pte_page(pmd)) {  			if (pmd_set_huge(pmd, phys_addr + addr, prot))  				continue;  		} @@ -117,7 +118,8 @@ static inline int ioremap_pud_range(p4d_t *p4d, unsigned long addr,  		if (ioremap_pud_enabled() &&  		    ((next - addr) == PUD_SIZE) && -		    IS_ALIGNED(phys_addr + addr, PUD_SIZE)) { +		    IS_ALIGNED(phys_addr + addr, PUD_SIZE) && +		    pud_free_pmd_page(pud)) {  			if (pud_set_huge(pud, phys_addr + addr, prot))  				continue;  		} | 

