runsv: robustify signal handling - SIGTERM to child between vfork and exec could mess things up

While at it, rename bb_signals_recursive_norestart() to bb_signals_norestart():
"recursive" was implying we are setting SA_NODEFER allowing signal handler
to be entered recursively, but we do not do that.

function                                             old     new   delta
bb_signals_norestart                                   -      70     +70
startservice                                         380     394     +14
bb_signals_recursive_norestart                        70       -     -70
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/0 up/down: 84/-70)             Total: 14 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2021-06-05 16:20:05 +02:00
parent d3e1090308
commit 5dadd497ff
6 changed files with 27 additions and 18 deletions

View file

@ -226,7 +226,7 @@ int klogd_main(int argc UNUSED_PARAM, char **argv)
signal(SIGHUP, SIG_IGN);
/* We want klogd_read to not be restarted, thus _norestart: */
bb_signals_recursive_norestart(BB_FATAL_SIGS, record_signo);
bb_signals_norestart(BB_FATAL_SIGS, record_signo);
syslog(LOG_NOTICE, "klogd started: %s", bb_banner);