[PATCH 2/2] kernel/signal.c: explicitly initialize si_code and use ksig->info uniformly

From: wenyang . linux
Date: Thu Feb 22 2024 - 11:05:59 EST


From: Wen Yang <wenyang.linux@xxxxxxxxxxx>

By explicitly initializing ksig->info.si_code and uniformly using ksig->info,
get_signal() function could be slightly optimized, as folowes:

clear_siginfo(&ksig->info);
ksig->info.si_signo = signr = SIGKILL; --> missed si_code
sigdelset(&current->pending.signal, SIGKILL);
trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO, --> unnecessary SEND_SIG_NOINFO
&sighand->action[SIGKILL - 1]);
recalc_sigpending();
goto fatal;
..

fatal:
..
if (sig_kernel_coredump(signr)) {
..
do_coredump(&ksig->info); --> contains si_code
}

No functional change intended.

Signed-off-by: Wen Yang <wenyang.linux@xxxxxxxxxxx>
Cc: Oleg Nesterov <oleg@xxxxxxxxxx>
Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Cc: Christian Brauner <brauner@xxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
Cc: Luis Chamberlain <mcgrof@xxxxxxxxxx>
Cc: Mike Christie <michael.christie@xxxxxxxxxx>
Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx>
Cc: Vincent Whitchurch <vincent.whitchurch@xxxxxxxx>
Cc: Ard Biesheuvel <ardb@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx
---
kernel/signal.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/signal.c b/kernel/signal.c
index 9b40109f0c56..8cab55bbec2f 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -2732,8 +2732,9 @@ bool get_signal(struct ksignal *ksig)
signal->group_exec_task) {
clear_siginfo(&ksig->info);
ksig->info.si_signo = signr = SIGKILL;
+ ksig->info.si_code = SI_USER;
sigdelset(&current->pending.signal, SIGKILL);
- trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO,
+ trace_signal_deliver(SIGKILL, &ksig->info,
&sighand->action[SIGKILL - 1]);
recalc_sigpending();
goto fatal;
--
2.25.1