We get sporadic reports of `__iounmap: bad address' coming out. Add a dump_stack() to find the culprit. Try to identify which subsystem is having iounmap() problems. Signed-off-by: Andrew Morton --- arch/i386/mm/ioremap.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff -puN arch/i386/mm/ioremap.c~iounmap-debugging arch/i386/mm/ioremap.c --- devel/arch/i386/mm/ioremap.c~iounmap-debugging 2005-07-05 22:30:16.000000000 -0700 +++ devel-akpm/arch/i386/mm/ioremap.c 2005-07-05 22:30:16.000000000 -0700 @@ -228,7 +228,8 @@ EXPORT_SYMBOL(ioremap_nocache); void iounmap(volatile void __iomem *addr) { struct vm_struct *p; - if ((void __force *) addr <= high_memory) + + if ((void __force *)addr <= high_memory) return; /* @@ -241,9 +242,10 @@ void iounmap(volatile void __iomem *addr return; write_lock(&vmlist_lock); - p = __remove_vm_area((void *) (PAGE_MASK & (unsigned long __force) addr)); + p = __remove_vm_area((void *)(PAGE_MASK & (unsigned long __force)addr)); if (!p) { printk(KERN_WARNING "iounmap: bad address %p\n", addr); + dump_stack(); goto out_unlock; } _