diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-08-01 16:39:51 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-08-01 16:39:51 +0900 |
commit | 06f862c8ce0893b5525ce90f39168eaf4608ecc6 (patch) | |
tree | 61c6d2300a0426cc6317c50a1e213d27e2c75719 /arch | |
parent | 56c74c733cdd101832c4bbf9af8a009a9eaec784 (diff) | |
download | op-kernel-dev-06f862c8ce0893b5525ce90f39168eaf4608ecc6.zip op-kernel-dev-06f862c8ce0893b5525ce90f39168eaf4608ecc6.tar.gz |
sh: Fix pgd mismatch from cached TTB in unhandled fault.
When reading the cached TTB value and extracting the pgd, we
accidentally applied a __va() to it and bumped it off in to bogus
space which ended up causing multiple faults in the error path.
Fix it up so unhandled faults don't do strange and highly unorthodox
things when oopsing.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/mm/fault.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index 964c676..04a39aa 100644 --- a/arch/sh/mm/fault.c +++ b/arch/sh/mm/fault.c @@ -184,8 +184,7 @@ no_context: printk(KERN_ALERT "pc = %08lx\n", regs->pc); page = (unsigned long)get_TTB(); if (page) { - page = ((__typeof__(page) *) __va(page))[address >> - PGDIR_SHIFT]; + page = ((__typeof__(page) *)page)[address >> PGDIR_SHIFT]; printk(KERN_ALERT "*pde = %08lx\n", page); if (page & _PAGE_PRESENT) { page &= PAGE_MASK; |