diff options
Diffstat (limited to 'arch')
-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); |