瀏覽代碼

[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>
Andi Kleen 19 年之前
父節點
當前提交
70583161e8
共有 1 個文件被更改,包括 6 次插入4 次删除
  1. 6 4
      arch/i386/kernel/traps.c

+ 6 - 4
arch/i386/kernel/traps.c

@@ -190,11 +190,11 @@ static void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
 		if (unw_ret > 0 && !arch_unw_user_mode(&info)) {
 		if (unw_ret > 0 && !arch_unw_user_mode(&info)) {
 #ifdef CONFIG_STACK_UNWIND
 #ifdef CONFIG_STACK_UNWIND
 			print_symbol("DWARF2 unwinder stuck at %s\n",
 			print_symbol("DWARF2 unwinder stuck at %s\n",
-				     UNW_PC(info.regs));
+				     UNW_PC(&info));
 			if (call_trace == 1) {
 			if (call_trace == 1) {
 				printk("Leftover inexact backtrace:\n");
 				printk("Leftover inexact backtrace:\n");
-				if (UNW_SP(info.regs))
-					stack = (void *)UNW_SP(info.regs);
+				if (UNW_SP(&info))
+					stack = (void *)UNW_SP(&info);
 			} else if (call_trace > 1)
 			} else if (call_trace > 1)
 				return;
 				return;
 			else
 			else
@@ -1249,8 +1249,10 @@ static int __init call_trace_setup(char *s)
 		call_trace = -1;
 		call_trace = -1;
 	else if (strcmp(s, "both") == 0)
 	else if (strcmp(s, "both") == 0)
 		call_trace = 0;
 		call_trace = 0;
-	else if (strcmp(s, "new") == 0)
+	else if (strcmp(s, "newfallback") == 0)
 		call_trace = 1;
 		call_trace = 1;
+	else if (strcmp(s, "new") == 2)
+		call_trace = 2;
 	return 1;
 	return 1;
 }
 }
 __setup("call_trace=", call_trace_setup);
 __setup("call_trace=", call_trace_setup);