[PATCH] M68k free_io_area()

From: Geert Uytterhoeven
Date: Fri Aug 29 2003 - 10:19:35 EST


M68k: Take the gap into account in free_io_area() (from Michael Müller)

--- linux-2.4.23-pre1/arch/m68k/mm/kmap.c Mon Feb 19 10:36:43 2001
+++ linux-m68k-2.4.23-pre1/arch/m68k/mm/kmap.c Tue Jul 1 22:06:18 2003
@@ -71,7 +71,7 @@
addr = tmp->size + (unsigned long)tmp->addr;
}
area->addr = (void *)addr;
- area->size = size + IO_SIZE;
+ area->size = size + IO_SIZE; /* leave a gap between */
area->next = *p;
*p = area;
return area;
@@ -87,7 +87,10 @@
for (p = &iolist ; (tmp = *p) ; p = &tmp->next) {
if (tmp->addr == addr) {
*p = tmp->next;
- __iounmap(tmp->addr, tmp->size);
+ if ( tmp->size > IO_SIZE )
+ __iounmap(tmp->addr, tmp->size - IO_SIZE);
+ else
+ printk("free_io_area: Invalid I/O area size %lu\n", tmp->size);
kfree(tmp);
return;
}

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/