diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 02e050ae59f6871e89d20481c66e251063486412..3b5e47dc0c9737fe7e996769a45c416bb5201c1d 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -527,9 +527,9 @@ void __init create_mapping(struct map_desc *md) return; } - addr = md->virtual; + addr = md->virtual & PAGE_MASK; phys = (unsigned long)__pfn_to_phys(md->pfn); - length = PAGE_ALIGN(md->length); + length = PAGE_ALIGN(md->length + (md->virtual & ~PAGE_MASK)); if (type->prot_l1 == 0 && ((addr | phys | length) & ~SECTION_MASK)) { printk(KERN_WARNING "BUG: map for 0x%08lx at 0x%08lx can not "