summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/mips/kernel/process.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 951bf9ca3ce9..e7b0b385fb2b 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -465,8 +465,11 @@ unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
if (!kallsyms_lookup(pc, &size, &ofs, &modname, namebuf))
return 0;
- if (ofs == 0)
- return 0;
+ /*
+ * Return ra if an exception occured at the first instruction
+ */
+ if (unlikely(ofs == 0))
+ return ra;
info.func = (void *)(pc - ofs);
info.func_size = ofs; /* analyze from start to ofs */