summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-08-01 07:39:51 (GMT)
committerPaul Mundt <lethal@linux-sh.org>2007-08-01 07:39:51 (GMT)
commit06f862c8ce0893b5525ce90f39168eaf4608ecc6 (patch)
tree61c6d2300a0426cc6317c50a1e213d27e2c75719
parent56c74c733cdd101832c4bbf9af8a009a9eaec784 (diff)
downloadlinux-fsl-qoriq-06f862c8ce0893b5525ce90f39168eaf4608ecc6.tar.xz
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>
-rw-r--r--arch/sh/mm/fault.c3
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;