aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/mm
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2006-06-25 05:46:55 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-25 10:00:56 -0700
commita7b1a1a3089aaf1168e3b68a40e98532063d7811 (patch)
tree7d30cea5bbc3bdd1acddb2ac383922cc973dc499 /arch/m68k/mm
parent[PATCH] m68k: fix constraints of the signal functions and some cleanup (diff)
downloadlinux-dev-a7b1a1a3089aaf1168e3b68a40e98532063d7811.tar.xz
linux-dev-a7b1a1a3089aaf1168e3b68a40e98532063d7811.zip
[PATCH] m68k: fix __iounmap for 030
Ignore empty pmd entry during iomap (these are the holes between the mappings). Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/m68k/mm')
-rw-r--r--arch/m68k/mm/kmap.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/m68k/mm/kmap.c b/arch/m68k/mm/kmap.c
index 85ad19a0ac79..43ffab048724 100644
--- a/arch/m68k/mm/kmap.c
+++ b/arch/m68k/mm/kmap.c
@@ -259,13 +259,15 @@ void __iounmap(void *addr, unsigned long size)
if (CPU_IS_020_OR_030) {
int pmd_off = (virtaddr/PTRTREESIZE) & 15;
+ int pmd_type = pmd_dir->pmd[pmd_off] & _DESCTYPE_MASK;
- if ((pmd_dir->pmd[pmd_off] & _DESCTYPE_MASK) == _PAGE_PRESENT) {
+ if (pmd_type == _PAGE_PRESENT) {
pmd_dir->pmd[pmd_off] = 0;
virtaddr += PTRTREESIZE;
size -= PTRTREESIZE;
continue;
- }
+ } else if (pmd_type == 0)
+ continue;
}
if (pmd_bad(*pmd_dir)) {