diff options
author | haifeng.xu <haifeng.xu@shopee.com> | 2022-11-28 09:56:06 +0300 |
---|---|---|
committer | Kees Cook <keescook@chromium.org> | 2022-12-03 00:04:44 +0300 |
commit | 3a017d6355f24de42f2ad688df9fa19e0cb128f2 (patch) | |
tree | 534156673d6b284fd4229b8f65557954bd904fef | |
parent | 5abf698754b8e5e4f1ca1058ee2b9785fbce6d23 (diff) | |
download | linux-3a017d6355f24de42f2ad688df9fa19e0cb128f2.tar.xz |
signal: Initialize the info in ksignal
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
-rw-r--r-- | kernel/signal.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index d140672185a4..b9b0c8c620e7 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -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(¤t->pending.signal, SIGKILL); trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO, |