aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-08-14 12:05:46 -0400
committerPaul Mundt <lethal@linux-sh.org>2009-08-14 12:05:46 -0400
commit48e4d4604b7da52d6a56ddc821a460b183b7353d (patch)
treef9a7846e5616dc972dcfa6e7d279f28e8178c014 /arch/sh
parent0fc11e3618bb1f9e0640127ec84f5d2690fa3894 (diff)
sh: stacktrace: Add reliability checks in address saving ops.
This adopts the reliability checks from the x86 stacktrace code so known bad addresses are not recorded in the stack trace buffer. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r--arch/sh/kernel/stacktrace.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/sh/kernel/stacktrace.c b/arch/sh/kernel/stacktrace.c
index 45b1adde3abe..a0f497bcbb4f 100644
--- a/arch/sh/kernel/stacktrace.c
+++ b/arch/sh/kernel/stacktrace.c
@@ -38,6 +38,9 @@ static void save_stack_address(void *data, unsigned long addr, int reliable)
38{ 38{
39 struct stack_trace *trace = data; 39 struct stack_trace *trace = data;
40 40
41 if (!reliable)
42 return;
43
41 if (trace->skip > 0) { 44 if (trace->skip > 0) {
42 trace->skip--; 45 trace->skip--;
43 return; 46 return;
@@ -67,6 +70,9 @@ save_stack_address_nosched(void *data, unsigned long addr, int reliable)
67{ 70{
68 struct stack_trace *trace = (struct stack_trace *)data; 71 struct stack_trace *trace = (struct stack_trace *)data;
69 72
73 if (!reliable)
74 return;
75
70 if (in_sched_functions(addr)) 76 if (in_sched_functions(addr))
71 return; 77 return;
72 78