From: Paul Mundt Date: Wed, 1 Aug 2007 07:39:51 +0000 (+0900) Subject: sh: Fix pgd mismatch from cached TTB in unhandled fault. X-Git-Tag: v2.6.23-rc2~5^2~5 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06f862c8ce0893b5525ce90f39168eaf4608ecc6;p=linux-2.6 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 --- diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index 964c6767dc..04a39aa7f1 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;