diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-01-27 12:01:51 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-27 12:01:51 +0100 |
commit | 3ddeb51d9c83931c1ca6abf76a38934c5a1ed918 (patch) | |
tree | fc2efb59d627135ea2199a8a68415b162646b121 /arch/arm/mm/ioremap.c | |
parent | 5a611268b69f05262936dd177205acbce4471358 (diff) | |
parent | 5ee810072175042775e39bdd3eaaa68884c27805 (diff) |
Merge branch 'linus' into core/percpu
Conflicts:
arch/x86/kernel/setup_percpu.c
Diffstat (limited to 'arch/arm/mm/ioremap.c')
-rw-r--r-- | arch/arm/mm/ioremap.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 18373f73f2f..9f88dd3be60 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c @@ -138,7 +138,7 @@ void __check_kvm_seq(struct mm_struct *mm) */ static void unmap_area_sections(unsigned long virt, unsigned long size) { - unsigned long addr = virt, end = virt + (size & ~SZ_1M); + unsigned long addr = virt, end = virt + (size & ~(SZ_1M - 1)); pgd_t *pgd; flush_cache_vunmap(addr, end); @@ -337,10 +337,7 @@ void __iounmap(volatile void __iomem *io_addr) void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr); #ifndef CONFIG_SMP struct vm_struct **p, *tmp; -#endif - unsigned int section_mapping = 0; -#ifndef CONFIG_SMP /* * If this is a section based mapping we need to handle it * specially as the VM subsystem does not know how to handle @@ -352,11 +349,8 @@ void __iounmap(volatile void __iomem *io_addr) for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) { if ((tmp->flags & VM_IOREMAP) && (tmp->addr == addr)) { if (tmp->flags & VM_ARM_SECTION_MAPPING) { - *p = tmp->next; unmap_area_sections((unsigned long)tmp->addr, tmp->size); - kfree(tmp); - section_mapping = 1; } break; } @@ -364,7 +358,6 @@ void __iounmap(volatile void __iomem *io_addr) write_unlock(&vmlist_lock); #endif - if (!section_mapping) - vunmap(addr); + vunmap(addr); } EXPORT_SYMBOL(__iounmap); |