From: Al Viro Restore a missing iounmap(). Signed-off-by: Andrew Morton --- 25-akpm/arch/i386/kernel/dmi_scan.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff -puN arch/i386/kernel/dmi_scan.c~dmi_iterate-fix arch/i386/kernel/dmi_scan.c --- 25/arch/i386/kernel/dmi_scan.c~dmi_iterate-fix 2005-01-10 17:29:24.187209904 -0800 +++ 25-akpm/arch/i386/kernel/dmi_scan.c 2005-01-10 17:29:24.191209296 -0800 @@ -104,6 +104,11 @@ static int __init dmi_iterate(void (*dec u8 buf[15]; char __iomem *p, *q; + /* + * no iounmap() for that ioremap(); it would be a no-op, but it's + * so early in setup that sucker gets confused into doing what + * it shouldn't if we actually call it. + */ for (p = q = ioremap(0xF0000, 0x10000); q < p + 0x10000; q += 16) { memcpy_fromio(buf, q, 15); if(memcmp(buf, "_DMI_", 5)==0 && dmi_checksum(buf)) @@ -125,13 +130,10 @@ static int __init dmi_iterate(void (*dec num, len)); dmi_printk((KERN_INFO "DMI table at 0x%08X.\n", base)); - if(dmi_table(base,len, num, decode)==0) { - iounmap(p); + if(dmi_table(base,len, num, decode)==0) return 0; - } } } - iounmap(p); return -1; } _