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>
This commit is contained in:
parent
56c74c733c
commit
06f862c8ce
1 changed files with 1 additions and 2 deletions
|
@ -184,8 +184,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
|
|||
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;
|
||||
|
|
Loading…
Reference in a new issue