]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
x86: Avoid double stack traces with show_regs()
authorJan Beulich <JBeulich@suse.com>
Wed, 9 May 2012 07:47:37 +0000 (08:47 +0100)
committerIngo Molnar <mingo@kernel.org>
Wed, 9 May 2012 09:44:42 +0000 (11:44 +0200)
What was called show_registers() so far already showed a stack
trace for kernel faults, and kernel_stack_pointer() isn't even
valid to be used for faults from user mode, hence it was
pointless for show_regs() to call show_trace() after
show_registers().

Simply rename show_registers() to show_regs() and eliminate
the old definition.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Link: http://lkml.kernel.org/r/4FAA3D3902000078000826E1@nat28.tlf.novell.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/include/asm/kdebug.h
arch/x86/kernel/dumpstack.c
arch/x86/kernel/dumpstack_32.c
arch/x86/kernel/dumpstack_64.c
arch/x86/kernel/kprobes.c
arch/x86/kernel/nmi.c
arch/x86/kernel/process.c

index d73f1571bde72ee744109afed9337306fd39a414..2c37aadcbc350a48756e05e00b9b227eb2808d2b 100644 (file)
@@ -24,7 +24,6 @@ enum die_val {
 extern void printk_address(unsigned long address, int reliable);
 extern void die(const char *, struct pt_regs *,long);
 extern int __must_check __die(const char *, struct pt_regs *, long);
-extern void show_registers(struct pt_regs *regs);
 extern void show_trace(struct task_struct *t, struct pt_regs *regs,
                       unsigned long *sp, unsigned long bp);
 extern void __show_regs(struct pt_regs *regs, int all);
index 1b81839b6c8890f261e486429db51f37a9c68042..40989da4bb225c01a56ba62747b401bc3f944e6e 100644 (file)
@@ -271,7 +271,7 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err)
                        current->thread.trap_nr, SIGSEGV) == NOTIFY_STOP)
                return 1;
 
-       show_registers(regs);
+       show_regs(regs);
 #ifdef CONFIG_X86_32
        if (user_mode_vm(regs)) {
                sp = regs->sp;
index 88ec9129271dcae3a10bcb428325b0fb083eb62d..e0b1d783daabfb94fcd2b85ff54ffcc7709a2a16 100644 (file)
@@ -82,7 +82,7 @@ show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
 }
 
 
-void show_registers(struct pt_regs *regs)
+void show_regs(struct pt_regs *regs)
 {
        int i;
 
index 17107bd6e1f0af06b5e59b1c48d452305a8b3214..791b76122aa8b0b627eb39e3ac6028701a9a868c 100644 (file)
@@ -245,7 +245,7 @@ show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
        show_trace_log_lvl(task, regs, sp, bp, log_lvl);
 }
 
-void show_registers(struct pt_regs *regs)
+void show_regs(struct pt_regs *regs)
 {
        int i;
        unsigned long sp;
index e213fc8408d2b644b8476be8c26b1d1b5d2bbbb8..e2f751efb7b1ef25ce9329a49128a48c1dcf9c3f 100644 (file)
@@ -1037,9 +1037,9 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
                               "current sp %p does not match saved sp %p\n",
                               stack_addr(regs), kcb->jprobe_saved_sp);
                        printk(KERN_ERR "Saved registers for jprobe %p\n", jp);
-                       show_registers(saved_regs);
+                       show_regs(saved_regs);
                        printk(KERN_ERR "Current registers\n");
-                       show_registers(regs);
+                       show_regs(regs);
                        BUG();
                }
                *regs = kcb->jprobe_saved_regs;
index 47acaf31916592d48995fa8fcb27ee9a0ce30139..03c134544966e0aacd677ee64f384ef341ee4015 100644 (file)
@@ -244,7 +244,7 @@ io_check_error(unsigned char reason, struct pt_regs *regs)
        pr_emerg(
        "NMI: IOCK error (debug interrupt?) for reason %02x on CPU %d.\n",
                 reason, smp_processor_id());
-       show_registers(regs);
+       show_regs(regs);
 
        if (panic_on_io_nmi)
                panic("NMI IOCK error: Not continuing");
index 1d92a5ab6e8b939613d6bfd7221133df2496b482..856d5bcae5b264d32081fe93a9bb3434f2caebd7 100644 (file)
@@ -105,12 +105,6 @@ void exit_thread(void)
        }
 }
 
-void show_regs(struct pt_regs *regs)
-{
-       show_registers(regs);
-       show_trace(NULL, regs, (unsigned long *)kernel_stack_pointer(regs), 0);
-}
-
 void show_regs_common(void)
 {
        const char *vendor, *product, *board;