[PATCH] unwinder: always use unlocked module list access in unwinder fallback
authorAndi Kleen <ak@suse.de>
Thu, 7 Dec 2006 01:14:12 +0000 (02:14 +0100)
committerAndi Kleen <andi@basil.nowhere.org>
Thu, 7 Dec 2006 01:14:12 +0000 (02:14 +0100)
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>
arch/x86_64/kernel/traps.c

index 75cecce..9864d19 100644 (file)
@@ -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 \