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:
@ -593,7 +593,7 @@ void bb_signals(int sigs, void (*f)(int)) FAST_FUNC;
|
||||
/* Unlike signal() and bb_signals, sets handler with sigaction()
|
||||
* and in a way that while signal handler is run, no other signals
|
||||
* will be blocked; syscalls will not be restarted: */
|
||||
void bb_signals_recursive_norestart(int sigs, void (*f)(int)) FAST_FUNC;
|
||||
void bb_signals_norestart(int sigs, void (*f)(int)) FAST_FUNC;
|
||||
/* syscalls like read() will be interrupted with EINTR: */
|
||||
void signal_no_SA_RESTART_empty_mask(int sig, void (*handler)(int)) FAST_FUNC;
|
||||
/* syscalls like read() won't be interrupted (though select/poll will be): */
|
||||
|
Reference in New Issue
Block a user