diff options
author | Andi Kleen <ak@suse.de> | 2006-07-29 15:42:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-29 23:59:55 -0400 |
commit | 70583161e878c8e9baaace71ba000b46c86b89cc (patch) | |
tree | 98defd3281ad00537b75e0b86d56c908a129464e /arch/i386/kernel/traps.c | |
parent | 65f87d8a8a6e1b560c61951d0a68ed80f7c8ff19 (diff) |
[PATCH] i386: Fix up backtrace fallback patch
I didn't test all compilation combinations. Shame on me.
And fix a missing option in the boot option following x86-64 (Jan Beulich)
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386/kernel/traps.c')
-rw-r--r-- | arch/i386/kernel/traps.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c index 3facc8fcb91e..021f8fdc7512 100644 --- a/arch/i386/kernel/traps.c +++ b/arch/i386/kernel/traps.c | |||
@@ -190,11 +190,11 @@ static void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs, | |||
190 | if (unw_ret > 0 && !arch_unw_user_mode(&info)) { | 190 | if (unw_ret > 0 && !arch_unw_user_mode(&info)) { |
191 | #ifdef CONFIG_STACK_UNWIND | 191 | #ifdef CONFIG_STACK_UNWIND |
192 | print_symbol("DWARF2 unwinder stuck at %s\n", | 192 | print_symbol("DWARF2 unwinder stuck at %s\n", |
193 | UNW_PC(info.regs)); | 193 | UNW_PC(&info)); |
194 | if (call_trace == 1) { | 194 | if (call_trace == 1) { |
195 | printk("Leftover inexact backtrace:\n"); | 195 | printk("Leftover inexact backtrace:\n"); |
196 | if (UNW_SP(info.regs)) | 196 | if (UNW_SP(&info)) |
197 | stack = (void *)UNW_SP(info.regs); | 197 | stack = (void *)UNW_SP(&info); |
198 | } else if (call_trace > 1) | 198 | } else if (call_trace > 1) |
199 | return; | 199 | return; |
200 | else | 200 | else |
@@ -1249,8 +1249,10 @@ static int __init call_trace_setup(char *s) | |||
1249 | call_trace = -1; | 1249 | call_trace = -1; |
1250 | else if (strcmp(s, "both") == 0) | 1250 | else if (strcmp(s, "both") == 0) |
1251 | call_trace = 0; | 1251 | call_trace = 0; |
1252 | else if (strcmp(s, "new") == 0) | 1252 | else if (strcmp(s, "newfallback") == 0) |
1253 | call_trace = 1; | 1253 | call_trace = 1; |
1254 | else if (strcmp(s, "new") == 2) | ||
1255 | call_trace = 2; | ||
1254 | return 1; | 1256 | return 1; |
1255 | } | 1257 | } |
1256 | __setup("call_trace=", call_trace_setup); | 1258 | __setup("call_trace=", call_trace_setup); |