summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHaavard Skinnemoen <hskinnemoen@atmel.com>2008-02-13 12:32:34 +0100
committerHaavard Skinnemoen <hskinnemoen@atmel.com>2008-02-13 14:44:04 +0100
commit32019828d9012e584017a824f84798248c0060dd (patch)
tree36287fd0eb2e117d61ed59b0199ea0af147493ad
parente48a411fa097c386c6081f4ed5a952aa3e21ca2b (diff)
downloadlinux-stable-32019828d9012e584017a824f84798248c0060dd.tar.gz
linux-stable-32019828d9012e584017a824f84798248c0060dd.tar.bz2
linux-stable-32019828d9012e584017a824f84798248c0060dd.zip
avr32: Fix broken pte dump code in do_page_fault()
The per-task page tables only cover the first 2GiB of the address space. For kernel addresses, we need to do the lookup in init's page tables. This is a temporary workaround until we modify the per-task page tables to cover the whole 4GiB address space. Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
-rw-r--r--arch/avr32/mm/fault.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
index 6560cb18b4e3..ce4e4296b954 100644
--- a/arch/avr32/mm/fault.c
+++ b/arch/avr32/mm/fault.c
@@ -189,6 +189,8 @@ no_context:
page = sysreg_read(PTBR);
printk(KERN_ALERT "ptbr = %08lx", page);
+ if (address >= TASK_SIZE)
+ page = (unsigned long)swapper_pg_dir;
if (page) {
page = ((unsigned long *)page)[address >> 22];
printk(" pgd = %08lx", page);