From 8568a73f33e638ae0d1e644fdc0d63dee3b8aa20 Mon Sep 17 00:00:00 2001 From: Susumu Komae Date: Tue, 17 Feb 2015 16:51:29 +0900 Subject: [PATCH] traced process should stop by any signal except for SIGKILL, even if SIG_IGN. (LTP ptrace01) --- arch/x86/kernel/syscall.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/x86/kernel/syscall.c b/arch/x86/kernel/syscall.c index 4600d5f6..d8144f2c 100644 --- a/arch/x86/kernel/syscall.c +++ b/arch/x86/kernel/syscall.c @@ -839,10 +839,10 @@ do_kill(int pid, int tid, int sig, siginfo_t *info, int ptracecont) in check_signal */ rc = 0; k = tproc->sighandler->action + sig - 1; - if(k->sa.sa_handler != (void *)1 && - (k->sa.sa_handler != NULL || - (tproc->ftn->ptrace & PT_TRACED) || - (sig != SIGCHLD && sig != SIGURG))){ + if((sig != SIGKILL && (tproc->ftn->ptrace & PT_TRACED)) || + (k->sa.sa_handler != (void *)1 && + (k->sa.sa_handler != NULL || + (sig != SIGCHLD && sig != SIGURG)))){ struct sig_pending *pending = NULL; if (sig < 33) { // SIGRTMIN - SIGRTMAX list_for_each_entry(pending, head, list){