aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-12-07 02:14:12 +0100
committerAndi Kleen <andi@basil.nowhere.org>2006-12-07 02:14:12 +0100
commit446f713ba1afd68568139ae4691335ba273fa7f4 (patch)
treefaa45ced3a3dc71b4637241828c10bf0abd2d7dd /arch/x86_64
parent[PATCH] unwinder: Use probe_kernel_address instead of __get_user in kernel/unwind.c (diff)
downloadlinux-dev-446f713ba1afd68568139ae4691335ba273fa7f4.tar.xz
linux-dev-446f713ba1afd68568139ae4691335ba273fa7f4.zip
[PATCH] unwinder: always use unlocked module list access in unwinder fallback
We're already well protected against module unloads because module unload uses stop_machine(). The only exception is NMIs, but other users already risk lockless accesses here. This avoids some hackery in lockdep and also a potential deadlock This matches what i386 does. Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/x86_64')
-rw-r--r--arch/x86_64/kernel/traps.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c
index 75ceccee178c..9864d195c408 100644
--- a/arch/x86_64/kernel/traps.c
+++ b/arch/x86_64/kernel/traps.c
@@ -317,9 +317,9 @@ void dump_trace(struct task_struct *tsk, struct pt_regs *regs,
#define HANDLE_STACK(cond) \
do while (cond) { \
unsigned long addr = *stack++; \
- if (oops_in_progress ? \
- __kernel_text_address(addr) : \
- kernel_text_address(addr)) { \
+ /* Use unlocked access here because except for NMIs \
+ we should be already protected against module unloads */ \
+ if (__kernel_text_address(addr)) { \
/* \
* If the address is either in the text segment of the \
* kernel, or in the region which contains vmalloc'ed \