| From 98af37d624ed8c83f1953b1b6b2f6866011fc064 Mon Sep 17 00:00:00 2001 |
| From: Zhenliang Wei <weizhenliang@huawei.com> |
| Date: Fri, 31 May 2019 22:30:52 -0700 |
| Subject: kernel/signal.c: trace_signal_deliver when signal_group_exit |
| |
| From: Zhenliang Wei <weizhenliang@huawei.com> |
| |
| commit 98af37d624ed8c83f1953b1b6b2f6866011fc064 upstream. |
| |
| In the fixes commit, removing SIGKILL from each thread signal mask and |
| executing "goto fatal" directly will skip the call to |
| "trace_signal_deliver". At this point, the delivery tracking of the |
| SIGKILL signal will be inaccurate. |
| |
| Therefore, we need to add trace_signal_deliver before "goto fatal" after |
| executing sigdelset. |
| |
| Note: SEND_SIG_NOINFO matches the fact that SIGKILL doesn't have any info. |
| |
| Link: http://lkml.kernel.org/r/20190425025812.91424-1-weizhenliang@huawei.com |
| Fixes: cf43a757fd4944 ("signal: Restore the stop PTRACE_EVENT_EXIT") |
| Signed-off-by: Zhenliang Wei <weizhenliang@huawei.com> |
| Reviewed-by: Christian Brauner <christian@brauner.io> |
| Reviewed-by: Oleg Nesterov <oleg@redhat.com> |
| Cc: Eric W. Biederman <ebiederm@xmission.com> |
| Cc: Ivan Delalande <colona@arista.com> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Cc: Deepa Dinamani <deepa.kernel@gmail.com> |
| Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| kernel/signal.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/kernel/signal.c |
| +++ b/kernel/signal.c |
| @@ -2436,6 +2436,8 @@ relock: |
| if (signal_group_exit(signal)) { |
| ksig->info.si_signo = signr = SIGKILL; |
| sigdelset(¤t->pending.signal, SIGKILL); |
| + trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO, |
| + &sighand->action[SIGKILL - 1]); |
| recalc_sigpending(); |
| goto fatal; |
| } |