]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] Fix exception trace printing on x86-64
authorAndrew Morton <akpm@osdl.org>
Sat, 12 Jun 2004 23:37:58 +0000 (16:37 -0700)
committerLinus Torvalds <torvalds@evo.osdl.org>
Sat, 12 Jun 2004 23:37:58 +0000 (16:37 -0700)
From: Andi Kleen <ak@suse.de>

Originally by Juergen Kreileder, changed by me.

The test for unhandled signals was wrong.  Correct it.  This helps Java
users, who would see bogus printks in their kernel logs previously.

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/x86_64/mm/fault.c

index f5edd302a5489c2ef9ecd8b1e90520c3e6727482..2cdf34b990508d3f1a56f1b72872fe308e6ddadb 100644 (file)
@@ -211,7 +211,8 @@ static int is_errata93(struct pt_regs *regs, unsigned long address)
 int unhandled_signal(struct task_struct *tsk, int sig)
 {
        /* Warn for strace, but not for gdb */
-       if ((tsk->ptrace & (PT_PTRACED|PT_TRACESYSGOOD)) == PT_PTRACED)
+       if (!test_ti_thread_flag(tsk->thread_info, TIF_SYSCALL_TRACE) &&
+           (tsk->ptrace & PT_PTRACED))
                return 0;
        return (tsk->sighand->action[sig-1].sa.sa_handler == SIG_IGN) ||
                (tsk->sighand->action[sig-1].sa.sa_handler == SIG_DFL);
@@ -374,7 +375,7 @@ bad_area_nosemaphore:
                    (address >> 32))
                        return;
 
-               if (exception_trace && !unhandled_signal(tsk, SIGSEGV)) { 
+               if (exception_trace && unhandled_signal(tsk, SIGSEGV)) {
                printk(KERN_INFO 
                       "%s[%d]: segfault at %016lx rip %016lx rsp %016lx error %lx\n",
                                        tsk->comm, tsk->pid, address, regs->rip,