diff options
author | Andi Kleen <ak@suse.de> | 2006-09-26 04:52:38 -0400 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-09-26 04:52:38 -0400 |
commit | e8c7391de4cd91b2cbb0c791f69ba1e066595848 (patch) | |
tree | 47d55aab3429321e346e2e9dec439d9fff4554d1 /arch/x86_64 | |
parent | 3566561bfadffcb5dbc85d576be80c0dbf2cccc9 (diff) |
[PATCH] Don't use kernel_text_address in oops context
Because it can take spinlocks.
Suggested by Mathieu Desnoyers
Cc: Mathieu Desnoyers <compudj@krystal.dyndns.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/x86_64')
-rw-r--r-- | arch/x86_64/kernel/traps.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c index fb8486eca1b6..01f2a8d254c2 100644 --- a/arch/x86_64/kernel/traps.c +++ b/arch/x86_64/kernel/traps.c | |||
@@ -299,7 +299,9 @@ void dump_trace(struct task_struct *tsk, struct pt_regs *regs, unsigned long * s | |||
299 | #define HANDLE_STACK(cond) \ | 299 | #define HANDLE_STACK(cond) \ |
300 | do while (cond) { \ | 300 | do while (cond) { \ |
301 | unsigned long addr = *stack++; \ | 301 | unsigned long addr = *stack++; \ |
302 | if (kernel_text_address(addr)) { \ | 302 | if (oops_in_progress ? \ |
303 | __kernel_text_address(addr) : \ | ||
304 | kernel_text_address(addr)) { \ | ||
303 | /* \ | 305 | /* \ |
304 | * If the address is either in the text segment of the \ | 306 | * If the address is either in the text segment of the \ |
305 | * kernel, or in the region which contains vmalloc'ed \ | 307 | * kernel, or in the region which contains vmalloc'ed \ |