diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-02-13 21:07:45 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:12:38 -0500 |
commit | bf941d6cd62aa2022f0887e25e3d02c389b0bf9b (patch) | |
tree | 56c8e87668d29ab96e0d84ba6aa5a62e64d9b827 /arch/sparc64 | |
parent | 6c0f402f6cc62314ef83b975f3430350dcb6055f (diff) |
[SPARC64]: Log faulting vaddr when bogus kernel PC detected.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64')
-rw-r--r-- | arch/sparc64/mm/fault.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c index 439a53c1e560..b97bd054aad3 100644 --- a/arch/sparc64/mm/fault.c +++ b/arch/sparc64/mm/fault.c | |||
@@ -91,12 +91,13 @@ static void __kprobes unhandled_fault(unsigned long address, | |||
91 | die_if_kernel("Oops", regs); | 91 | die_if_kernel("Oops", regs); |
92 | } | 92 | } |
93 | 93 | ||
94 | static void bad_kernel_pc(struct pt_regs *regs) | 94 | static void bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr) |
95 | { | 95 | { |
96 | unsigned long *ksp; | 96 | unsigned long *ksp; |
97 | 97 | ||
98 | printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n", | 98 | printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n", |
99 | regs->tpc); | 99 | regs->tpc); |
100 | printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr); | ||
100 | __asm__("mov %%sp, %0" : "=r" (ksp)); | 101 | __asm__("mov %%sp, %0" : "=r" (ksp)); |
101 | show_stack(current, ksp); | 102 | show_stack(current, ksp); |
102 | unhandled_fault(regs->tpc, current, regs); | 103 | unhandled_fault(regs->tpc, current, regs); |
@@ -280,7 +281,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) | |||
280 | (tpc >= MODULES_VADDR && tpc < MODULES_END)) { | 281 | (tpc >= MODULES_VADDR && tpc < MODULES_END)) { |
281 | /* Valid, no problems... */ | 282 | /* Valid, no problems... */ |
282 | } else { | 283 | } else { |
283 | bad_kernel_pc(regs); | 284 | bad_kernel_pc(regs, address); |
284 | return; | 285 | return; |
285 | } | 286 | } |
286 | } | 287 | } |