Commit 06f862c8 authored by Paul Mundt's avatar Paul Mundt

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: default avatarPaul Mundt <lethal@linux-sh.org>
parent 56c74c73
...@@ -184,8 +184,7 @@ no_context: ...@@ -184,8 +184,7 @@ no_context:
printk(KERN_ALERT "pc = %08lx\n", regs->pc); printk(KERN_ALERT "pc = %08lx\n", regs->pc);
page = (unsigned long)get_TTB(); page = (unsigned long)get_TTB();
if (page) { if (page) {
page = ((__typeof__(page) *) __va(page))[address >> page = ((__typeof__(page) *)page)[address >> PGDIR_SHIFT];
PGDIR_SHIFT];
printk(KERN_ALERT "*pde = %08lx\n", page); printk(KERN_ALERT "*pde = %08lx\n", page);
if (page & _PAGE_PRESENT) { if (page & _PAGE_PRESENT) {
page &= PAGE_MASK; page &= PAGE_MASK;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment