diff options
author | Andi Kleen <ak@suse.de> | 2006-12-06 20:14:12 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-12-06 20:14:12 -0500 |
commit | 446f713ba1afd68568139ae4691335ba273fa7f4 (patch) | |
tree | faa45ced3a3dc71b4637241828c10bf0abd2d7dd /arch/x86_64/kernel/traps.c | |
parent | e2124bb8d369a4bc1afde1959040e33d71c41d5e (diff) |
[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/kernel/traps.c')
-rw-r--r-- | arch/x86_64/kernel/traps.c | 6 |
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, | |||
317 | #define HANDLE_STACK(cond) \ | 317 | #define HANDLE_STACK(cond) \ |
318 | do while (cond) { \ | 318 | do while (cond) { \ |
319 | unsigned long addr = *stack++; \ | 319 | unsigned long addr = *stack++; \ |
320 | if (oops_in_progress ? \ | 320 | /* Use unlocked access here because except for NMIs \ |
321 | __kernel_text_address(addr) : \ | 321 | we should be already protected against module unloads */ \ |
322 | kernel_text_address(addr)) { \ | 322 | if (__kernel_text_address(addr)) { \ |
323 | /* \ | 323 | /* \ |
324 | * If the address is either in the text segment of the \ | 324 | * If the address is either in the text segment of the \ |
325 | * kernel, or in the region which contains vmalloc'ed \ | 325 | * kernel, or in the region which contains vmalloc'ed \ |