get_signal: don't initialize ksig->info if SIGNAL_GROUP_EXIT/group_exec_task
authorOleg Nesterov <oleg@redhat.com>
Mon, 26 Feb 2024 16:56:53 +0000 (17:56 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 6 Mar 2024 21:07:39 +0000 (13:07 -0800)
This initialization is incomplete and unnecessary, neither do_group_exit()
nor PF_USER_WORKER need ksig->info.

Link: https://lkml.kernel.org/r/20240226165653.GA20834@redhat.com
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Peter Collingbourne <pcc@google.com>
Cc: Wen Yang <wenyang.linux@foxmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/signal.c

index a69d3069067ae8bb42de497487afccd2e2b8dd5b..9c6a5ccac328b9f482c0b5731c6d988e3d9c6006 100644 (file)
@@ -2727,12 +2727,15 @@ 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;
+                       signr = SIGKILL;
                        sigdelset(&current->pending.signal, SIGKILL);
                        trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO,
-                               &sighand->action[SIGKILL - 1]);
+                                            &sighand->action[SIGKILL-1]);
                        recalc_sigpending();
+                       /*
+                        * implies do_group_exit() or return to PF_USER_WORKER,
+                        * no need to initialize ksig->info/etc.
+                        */
                        goto fatal;
                }