signal: Initialize the info in ksignal
authorhaifeng.xu <haifeng.xu@shopee.com>
Mon, 28 Nov 2022 06:56:06 +0000 (06:56 +0000)
committerKees Cook <keescook@chromium.org>
Fri, 2 Dec 2022 21:04:44 +0000 (13:04 -0800)
When handing the SIGNAL_GROUP_EXIT flag, the info in ksignal isn't cleared.
However, the info acquired by dequeue_synchronous_signal/dequeue_signal is
initialized and can be safely used. Fortunately, the fatal signal process
just uses the si_signo and doesn't use any other member. Even so, the
initialization before use is more safer.

Signed-off-by: haifeng.xu <haifeng.xu@shopee.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20221128065606.19570-1-haifeng.xu@shopee.com
kernel/signal.c

index d140672..b9b0c8c 100644 (file)
@@ -2693,6 +2693,7 @@ relock:
                /* Has this task already been marked for death? */
                if ((signal->flags & SIGNAL_GROUP_EXIT) ||
                     signal->group_exec_task) {
+                       clear_siginfo(&ksig->info);
                        ksig->info.si_signo = signr = SIGKILL;
                        sigdelset(&current->pending.signal, SIGKILL);
                        trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO,