浏览代码

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>
Paul Mundt 18 年之前
父节点
当前提交
06f862c8ce
共有 1 个文件被更改,包括 1 次插入2 次删除
  1. 1 2
      arch/sh/mm/fault.c

+ 1 - 2
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;