diff options
author | Michal Marek <mmarek@suse.cz> | 2011-03-09 10:15:44 -0500 |
---|---|---|
committer | Michal Marek <mmarek@suse.cz> | 2011-03-09 10:15:44 -0500 |
commit | 2d8ad8719591fa803b0d589ed057fa46f49b7155 (patch) | |
tree | 4ae051577dad1161c91dafbf4207bb10a9dc91bb /arch/x86/kernel/dumpstack.c | |
parent | 9b4ce7bce5f30712fd926ab4599a803314a07719 (diff) | |
parent | c56eb8fb6dccb83d9fe62fd4dc00c834de9bc470 (diff) |
Merge commit 'v2.6.38-rc1' into kbuild/packaging
Diffstat (limited to 'arch/x86/kernel/dumpstack.c')
-rw-r--r-- | arch/x86/kernel/dumpstack.c | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c index 6d817554780a..df20723a6a1b 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c | |||
@@ -18,7 +18,6 @@ | |||
18 | 18 | ||
19 | #include <asm/stacktrace.h> | 19 | #include <asm/stacktrace.h> |
20 | 20 | ||
21 | #include "dumpstack.h" | ||
22 | 21 | ||
23 | int panic_on_unrecovered_nmi; | 22 | int panic_on_unrecovered_nmi; |
24 | int panic_on_io_nmi; | 23 | int panic_on_io_nmi; |
@@ -176,21 +175,21 @@ static const struct stacktrace_ops print_trace_ops = { | |||
176 | 175 | ||
177 | void | 176 | void |
178 | show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs, | 177 | show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs, |
179 | unsigned long *stack, unsigned long bp, char *log_lvl) | 178 | unsigned long *stack, char *log_lvl) |
180 | { | 179 | { |
181 | printk("%sCall Trace:\n", log_lvl); | 180 | printk("%sCall Trace:\n", log_lvl); |
182 | dump_trace(task, regs, stack, bp, &print_trace_ops, log_lvl); | 181 | dump_trace(task, regs, stack, &print_trace_ops, log_lvl); |
183 | } | 182 | } |
184 | 183 | ||
185 | void show_trace(struct task_struct *task, struct pt_regs *regs, | 184 | void show_trace(struct task_struct *task, struct pt_regs *regs, |
186 | unsigned long *stack, unsigned long bp) | 185 | unsigned long *stack) |
187 | { | 186 | { |
188 | show_trace_log_lvl(task, regs, stack, bp, ""); | 187 | show_trace_log_lvl(task, regs, stack, ""); |
189 | } | 188 | } |
190 | 189 | ||
191 | void show_stack(struct task_struct *task, unsigned long *sp) | 190 | void show_stack(struct task_struct *task, unsigned long *sp) |
192 | { | 191 | { |
193 | show_stack_log_lvl(task, NULL, sp, 0, ""); | 192 | show_stack_log_lvl(task, NULL, sp, ""); |
194 | } | 193 | } |
195 | 194 | ||
196 | /* | 195 | /* |
@@ -198,20 +197,14 @@ void show_stack(struct task_struct *task, unsigned long *sp) | |||
198 | */ | 197 | */ |
199 | void dump_stack(void) | 198 | void dump_stack(void) |
200 | { | 199 | { |
201 | unsigned long bp = 0; | ||
202 | unsigned long stack; | 200 | unsigned long stack; |
203 | 201 | ||
204 | #ifdef CONFIG_FRAME_POINTER | ||
205 | if (!bp) | ||
206 | get_bp(bp); | ||
207 | #endif | ||
208 | |||
209 | printk("Pid: %d, comm: %.20s %s %s %.*s\n", | 202 | printk("Pid: %d, comm: %.20s %s %s %.*s\n", |
210 | current->pid, current->comm, print_tainted(), | 203 | current->pid, current->comm, print_tainted(), |
211 | init_utsname()->release, | 204 | init_utsname()->release, |
212 | (int)strcspn(init_utsname()->version, " "), | 205 | (int)strcspn(init_utsname()->version, " "), |
213 | init_utsname()->version); | 206 | init_utsname()->version); |
214 | show_trace(NULL, NULL, &stack, bp); | 207 | show_trace(NULL, NULL, &stack); |
215 | } | 208 | } |
216 | EXPORT_SYMBOL(dump_stack); | 209 | EXPORT_SYMBOL(dump_stack); |
217 | 210 | ||
@@ -224,11 +217,6 @@ unsigned __kprobes long oops_begin(void) | |||
224 | int cpu; | 217 | int cpu; |
225 | unsigned long flags; | 218 | unsigned long flags; |
226 | 219 | ||
227 | /* notify the hw-branch tracer so it may disable tracing and | ||
228 | add the last trace to the trace buffer - | ||
229 | the earlier this happens, the more useful the trace. */ | ||
230 | trace_hw_branch_oops(); | ||
231 | |||
232 | oops_enter(); | 220 | oops_enter(); |
233 | 221 | ||
234 | /* racy, but better than risking deadlock. */ | 222 | /* racy, but better than risking deadlock. */ |
@@ -246,6 +234,7 @@ unsigned __kprobes long oops_begin(void) | |||
246 | bust_spinlocks(1); | 234 | bust_spinlocks(1); |
247 | return flags; | 235 | return flags; |
248 | } | 236 | } |
237 | EXPORT_SYMBOL_GPL(oops_begin); | ||
249 | 238 | ||
250 | void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) | 239 | void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) |
251 | { | 240 | { |