mirror of
https://github.com/systemd/systemd.git
synced 2024-12-25 01:34:28 +03:00
Merge pull request #214 from poettering/signal-rework-2
everywhere: port everything to sigprocmask_many() and friends
This commit is contained in:
commit
86b85cf440
@ -159,7 +159,7 @@ int sigset_add_many(sigset_t *ss, ...) {
|
||||
return r;
|
||||
}
|
||||
|
||||
int sigprocmask_many(int how, ...) {
|
||||
int sigprocmask_many(int how, sigset_t *old, ...) {
|
||||
va_list ap;
|
||||
sigset_t ss;
|
||||
int r;
|
||||
@ -174,7 +174,7 @@ int sigprocmask_many(int how, ...) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (sigprocmask(how, &ss, NULL) < 0)
|
||||
if (sigprocmask(how, &ss, old) < 0)
|
||||
return -errno;
|
||||
|
||||
return 0;
|
||||
|
@ -33,7 +33,7 @@ int default_signals(int sig, ...);
|
||||
int sigaction_many(const struct sigaction *sa, ...);
|
||||
|
||||
int sigset_add_many(sigset_t *ss, ...);
|
||||
int sigprocmask_many(int how, ...);
|
||||
int sigprocmask_many(int how, sigset_t *old, ...);
|
||||
|
||||
const char *signal_to_string(int i) _const_;
|
||||
int signal_from_string(const char *s) _pure_;
|
||||
|
@ -51,7 +51,7 @@ int manager_new(Manager **out) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = sigprocmask_many(SIG_BLOCK, SIGTERM, SIGQUIT, SIGINT, SIGWINCH, SIGCHLD, -1);
|
||||
r = sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGQUIT, SIGINT, SIGWINCH, SIGCHLD, -1);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -824,10 +824,7 @@ static int setup_pam(
|
||||
/* Block SIGTERM, so that we know that it won't get lost in
|
||||
* the child */
|
||||
|
||||
if (sigemptyset(&ss) < 0 ||
|
||||
sigaddset(&ss, SIGTERM) < 0 ||
|
||||
sigprocmask(SIG_BLOCK, &ss, &old_ss) < 0)
|
||||
goto fail;
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, &old_ss, SIGTERM, -1) >= 0);
|
||||
|
||||
parent_pid = getpid();
|
||||
|
||||
@ -903,8 +900,7 @@ static int setup_pam(
|
||||
handle = NULL;
|
||||
|
||||
/* Unblock SIGTERM again in the parent */
|
||||
if (sigprocmask(SIG_SETMASK, &old_ss, NULL) < 0)
|
||||
goto fail;
|
||||
assert_se(sigprocmask(SIG_SETMASK, &old_ss, NULL) >= 0);
|
||||
|
||||
/* We close the log explicitly here, since the PAM modules
|
||||
* might have opened it, but we don't want this fd around. */
|
||||
|
@ -118,9 +118,9 @@ static int export_tar(int argc, char *argv[], void *userdata) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to allocate event loop: %m");
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
(void) sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
(void) sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
|
||||
r = tar_export_new(&export, event, on_tar_finished, event);
|
||||
if (r < 0)
|
||||
@ -197,9 +197,9 @@ static int export_raw(int argc, char *argv[], void *userdata) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to allocate event loop: %m");
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
(void) sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
(void) sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
|
||||
r = raw_export_new(&export, event, on_raw_finished, event);
|
||||
if (r < 0)
|
||||
|
@ -116,9 +116,9 @@ static int import_tar(int argc, char *argv[], void *userdata) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to allocate event loop: %m");
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
(void) sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
(void) sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
|
||||
r = tar_import_new(&import, event, arg_image_root, on_tar_finished, event);
|
||||
if (r < 0)
|
||||
@ -211,9 +211,9 @@ static int import_raw(int argc, char *argv[], void *userdata) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to allocate event loop: %m");
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
(void) sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
(void) sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
|
||||
r = raw_import_new(&import, event, arg_image_root, on_raw_finished, event);
|
||||
if (r < 0)
|
||||
|
@ -1301,7 +1301,7 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGCHLD, -1) >= 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGCHLD, -1) >= 0);
|
||||
|
||||
r = manager_new(&m);
|
||||
if (r < 0) {
|
||||
|
@ -109,9 +109,9 @@ static int pull_tar(int argc, char *argv[], void *userdata) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to allocate event loop: %m");
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
(void) sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
(void) sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
|
||||
r = tar_pull_new(&pull, event, arg_image_root, on_tar_finished, event);
|
||||
if (r < 0)
|
||||
@ -195,9 +195,9 @@ static int pull_raw(int argc, char *argv[], void *userdata) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to allocate event loop: %m");
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
(void) sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
(void) sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
|
||||
r = raw_pull_new(&pull, event, arg_image_root, on_raw_finished, event);
|
||||
if (r < 0)
|
||||
@ -303,9 +303,9 @@ static int pull_dkr(int argc, char *argv[], void *userdata) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to allocate event loop: %m");
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
(void) sd_event_add_signal(event, NULL, SIGTERM, interrupt_signal_handler, NULL);
|
||||
(void) sd_event_add_signal(event, NULL, SIGINT, interrupt_signal_handler, NULL);
|
||||
|
||||
r = dkr_pull_new(&pull, event, arg_dkr_index_url, arg_image_root, on_dkr_finished, event);
|
||||
if (r < 0)
|
||||
|
@ -788,14 +788,11 @@ static int dispatch_http_event(sd_event_source *event,
|
||||
**********************************************************************/
|
||||
|
||||
static int setup_signals(RemoteServer *s) {
|
||||
sigset_t mask;
|
||||
int r;
|
||||
|
||||
assert(s);
|
||||
|
||||
assert_se(sigemptyset(&mask) == 0);
|
||||
sigset_add_many(&mask, SIGINT, SIGTERM, -1);
|
||||
assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
|
||||
assert_se(sigprocmask_many(SIG_SETMASK, NULL, SIGINT, SIGTERM, -1) >= 0);
|
||||
|
||||
r = sd_event_add_signal(s->events, &s->sigterm_event, SIGTERM, NULL, s);
|
||||
if (r < 0)
|
||||
|
@ -396,14 +396,11 @@ static int dispatch_sigterm(sd_event_source *event,
|
||||
}
|
||||
|
||||
static int setup_signals(Uploader *u) {
|
||||
sigset_t mask;
|
||||
int r;
|
||||
|
||||
assert(u);
|
||||
|
||||
assert_se(sigemptyset(&mask) == 0);
|
||||
sigset_add_many(&mask, SIGINT, SIGTERM, -1);
|
||||
assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
|
||||
assert_se(sigprocmask_many(SIG_SETMASK, NULL, SIGINT, SIGTERM, -1) >= 0);
|
||||
|
||||
r = sd_event_add_signal(u->events, &u->sigterm_event, SIGTERM, dispatch_sigterm, u);
|
||||
if (r < 0)
|
||||
|
@ -1264,14 +1264,11 @@ static int dispatch_sigterm(sd_event_source *es, const struct signalfd_siginfo *
|
||||
}
|
||||
|
||||
static int setup_signals(Server *s) {
|
||||
sigset_t mask;
|
||||
int r;
|
||||
|
||||
assert(s);
|
||||
|
||||
assert_se(sigemptyset(&mask) == 0);
|
||||
sigset_add_many(&mask, SIGINT, SIGTERM, SIGUSR1, SIGUSR2, -1);
|
||||
assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
|
||||
assert(sigprocmask_many(SIG_SETMASK, NULL, SIGINT, SIGTERM, SIGUSR1, SIGUSR2, -1) >= 0);
|
||||
|
||||
r = sd_event_add_signal(s->event, &s->sigusr1_event_source, SIGUSR1, dispatch_sigusr1, s);
|
||||
if (r < 0)
|
||||
|
@ -154,7 +154,7 @@ static int evcat_new(Evcat **out) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1);
|
||||
r = sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -170,7 +170,7 @@ static int modeset_new(Modeset **out) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1);
|
||||
r = sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -856,7 +856,7 @@ static int terminal_new(Terminal **out, int in_fd, int out_fd) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
r = sigprocmask_many(SIG_BLOCK, SIGINT, SIGQUIT, SIGTERM, SIGWINCH, SIGCHLD, -1);
|
||||
r = sigprocmask_many(SIG_BLOCK, NULL, SIGINT, SIGQUIT, SIGTERM, SIGWINCH, SIGCHLD, -1);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "error: sigprocmask_many() (%d): %m", r);
|
||||
goto error;
|
||||
|
@ -79,7 +79,6 @@ static int child_handler(sd_event_source *s, const siginfo_t *si, void *userdata
|
||||
|
||||
static int signal_handler(sd_event_source *s, const struct signalfd_siginfo *si, void *userdata) {
|
||||
sd_event_source *p = NULL;
|
||||
sigset_t ss;
|
||||
pid_t pid;
|
||||
|
||||
assert_se(s);
|
||||
@ -89,9 +88,7 @@ static int signal_handler(sd_event_source *s, const struct signalfd_siginfo *si,
|
||||
|
||||
assert_se(userdata == INT_TO_PTR('e'));
|
||||
|
||||
assert_se(sigemptyset(&ss) >= 0);
|
||||
assert_se(sigaddset(&ss, SIGCHLD) >= 0);
|
||||
assert_se(sigprocmask(SIG_BLOCK, &ss, NULL) >= 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGCHLD, -1) >= 0);
|
||||
|
||||
pid = fork();
|
||||
assert_se(pid >= 0);
|
||||
@ -109,7 +106,6 @@ static int signal_handler(sd_event_source *s, const struct signalfd_siginfo *si,
|
||||
|
||||
static int defer_handler(sd_event_source *s, void *userdata) {
|
||||
sd_event_source *p = NULL;
|
||||
sigset_t ss;
|
||||
|
||||
assert_se(s);
|
||||
|
||||
@ -117,9 +113,8 @@ static int defer_handler(sd_event_source *s, void *userdata) {
|
||||
|
||||
assert_se(userdata == INT_TO_PTR('d'));
|
||||
|
||||
assert_se(sigemptyset(&ss) >= 0);
|
||||
assert_se(sigaddset(&ss, SIGUSR1) >= 0);
|
||||
assert_se(sigprocmask(SIG_BLOCK, &ss, NULL) >= 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGUSR1, -1) >= 0);
|
||||
|
||||
assert_se(sd_event_add_signal(sd_event_source_get_event(s), &p, SIGUSR1, signal_handler, INT_TO_PTR('e')) >= 0);
|
||||
assert_se(sd_event_source_set_enabled(p, SD_EVENT_ONESHOT) >= 0);
|
||||
raise(SIGUSR1);
|
||||
@ -209,7 +204,7 @@ int main(int argc, char *argv[]) {
|
||||
assert_se(sd_event_source_set_prepare(z, prepare_handler) >= 0);
|
||||
|
||||
/* Test for floating event sources */
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGRTMIN+1, -1) == 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGRTMIN+1, -1) >= 0);
|
||||
assert_se(sd_event_add_signal(e, NULL, SIGRTMIN+1, NULL, NULL) >= 0);
|
||||
|
||||
assert_se(write(a[1], &ch, 1) >= 0);
|
||||
|
@ -787,13 +787,8 @@ static int manager_connect_console(Manager *m) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
r = ignore_signals(SIGRTMIN + 1, -1);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Cannot ignore SIGRTMIN + 1: %m");
|
||||
|
||||
r = sigprocmask_many(SIG_BLOCK, SIGRTMIN, -1);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Cannot block SIGRTMIN: %m");
|
||||
assert_se(ignore_signals(SIGRTMIN + 1, -1) >= 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGRTMIN, -1) >= 0);
|
||||
|
||||
r = sd_event_add_signal(m->event, NULL, SIGRTMIN, manager_vt_switch, m);
|
||||
if (r < 0)
|
||||
|
@ -1219,7 +1219,7 @@ static int login_machine(int argc, char *argv[], void *userdata) {
|
||||
if (r < 0)
|
||||
return bus_log_parse_error(r);
|
||||
|
||||
sigprocmask_many(SIG_BLOCK, SIGWINCH, SIGTERM, SIGINT, -1);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGWINCH, SIGTERM, SIGINT, -1) >= 0);
|
||||
|
||||
log_info("Connected to machine %s. Press ^] three times within 1s to exit session.", argv[1]);
|
||||
|
||||
@ -1630,7 +1630,7 @@ static int transfer_image_common(sd_bus *bus, sd_bus_message *m) {
|
||||
if (r < 0)
|
||||
return bus_log_parse_error(r);
|
||||
|
||||
sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
|
||||
if (!arg_quiet)
|
||||
log_info("Enqueued transfer job %u. Press C-c to continue download in background.", id);
|
||||
|
@ -322,7 +322,7 @@ int main(int argc, char *argv[]) {
|
||||
* check stays in. */
|
||||
mkdir_label("/run/systemd/machines", 0755);
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGCHLD, -1) >= 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGCHLD, -1) >= 0);
|
||||
|
||||
m = manager_new();
|
||||
if (!m) {
|
||||
|
@ -129,7 +129,7 @@ int main(int argc, char *argv[]) {
|
||||
if (arg_quiet)
|
||||
log_set_max_level(LOG_WARNING);
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
|
||||
r = manager_new(&m, arg_interfaces, arg_ignore, arg_timeout);
|
||||
if (r < 0) {
|
||||
|
@ -75,7 +75,7 @@ int main(int argc, char *argv[]) {
|
||||
if (r < 0)
|
||||
goto out;
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
|
||||
r = manager_new(&m);
|
||||
if (r < 0) {
|
||||
|
@ -4465,7 +4465,7 @@ int main(int argc, char *argv[]) {
|
||||
int r, n_fd_passed, loop_nr = -1;
|
||||
char veth_name[IFNAMSIZ];
|
||||
bool secondary = false, remove_subvol = false;
|
||||
sigset_t mask, mask_chld;
|
||||
sigset_t mask_chld;
|
||||
pid_t pid = 0;
|
||||
int ret = EXIT_SUCCESS;
|
||||
union in_addr_union exposed = {};
|
||||
@ -4664,9 +4664,7 @@ int main(int argc, char *argv[]) {
|
||||
log_info("Spawning container %s on %s.\nPress ^] three times within 1s to kill container.",
|
||||
arg_machine, arg_image ?: arg_directory);
|
||||
|
||||
assert_se(sigemptyset(&mask) == 0);
|
||||
sigset_add_many(&mask, SIGCHLD, SIGWINCH, SIGTERM, SIGINT, -1);
|
||||
assert_se(sigprocmask(SIG_BLOCK, &mask, NULL) == 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGCHLD, SIGWINCH, SIGTERM, SIGINT, -1) >= 0);
|
||||
|
||||
assert_se(sigemptyset(&mask_chld) == 0);
|
||||
assert_se(sigaddset(&mask_chld, SIGCHLD) == 0);
|
||||
|
@ -71,7 +71,7 @@ int main(int argc, char *argv[]) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
|
||||
r = manager_new(&m);
|
||||
if (r < 0) {
|
||||
|
@ -789,19 +789,16 @@ static int start_transient_service(
|
||||
if (master >= 0) {
|
||||
_cleanup_(pty_forward_freep) PTYForward *forward = NULL;
|
||||
_cleanup_event_unref_ sd_event *event = NULL;
|
||||
sigset_t mask;
|
||||
char last_char = 0;
|
||||
|
||||
r = sd_event_default(&event);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to get event loop: %m");
|
||||
|
||||
assert_se(sigemptyset(&mask) == 0);
|
||||
sigset_add_many(&mask, SIGWINCH, SIGTERM, SIGINT, -1);
|
||||
assert_se(sigprocmask(SIG_BLOCK, &mask, NULL) == 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGWINCH, SIGTERM, SIGINT, -1) >= 0);
|
||||
|
||||
sd_event_add_signal(event, NULL, SIGINT, NULL, NULL);
|
||||
sd_event_add_signal(event, NULL, SIGTERM, NULL, NULL);
|
||||
(void) sd_event_add_signal(event, NULL, SIGINT, NULL, NULL);
|
||||
(void) sd_event_add_signal(event, NULL, SIGTERM, NULL, NULL);
|
||||
|
||||
if (!arg_quiet)
|
||||
log_info("Running as unit %s.\nPress ^] three times within 1s to disconnect TTY.", service);
|
||||
|
@ -323,9 +323,9 @@ int ask_password_agent(
|
||||
|
||||
assert(_passphrases);
|
||||
|
||||
assert_se(sigemptyset(&mask) == 0);
|
||||
sigset_add_many(&mask, SIGINT, SIGTERM, -1);
|
||||
assert_se(sigprocmask(SIG_BLOCK, &mask, &oldmask) == 0);
|
||||
assert_se(sigemptyset(&mask) >= 0);
|
||||
assert_se(sigset_add_many(&mask, SIGINT, SIGTERM, -1) >= 0);
|
||||
assert_se(sigprocmask(SIG_BLOCK, &mask, &oldmask) >= 0);
|
||||
|
||||
mkdir_p_label("/run/systemd/ask-password", 0755);
|
||||
|
||||
|
@ -129,7 +129,7 @@ int main(int argc, char *argv[]) {
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGCHLD, -1) >= 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGCHLD, -1) >= 0);
|
||||
|
||||
/* Oh, there're ugly races in the TTY layer regarding HUP vs IN. Turns
|
||||
* out they appear only 10% of the time. I fixed all of them and
|
||||
|
@ -116,7 +116,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
event = udev_event_new(dev);
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, SIGHUP, SIGCHLD, -1) == 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, SIGHUP, SIGCHLD, -1) >= 0);
|
||||
|
||||
/* do what devtmpfs usually provides us */
|
||||
if (udev_device_get_devnode(dev) != NULL) {
|
||||
|
@ -117,7 +117,7 @@ int main(int argc, char *argv[]) {
|
||||
if (setrlimit(RLIMIT_NPROC, &RLIMIT_MAKE_CONST(2)) < 0)
|
||||
log_warning_errno(errno, "Failed to lower RLIMIT_NPROC to 2: %m");
|
||||
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0);
|
||||
|
||||
r = manager_new(&m);
|
||||
if (r < 0) {
|
||||
|
@ -485,9 +485,9 @@ static int watch_passwords(void) {
|
||||
if (inotify_add_watch(notify, "/run/systemd/ask-password", IN_CLOSE_WRITE|IN_MOVED_TO) < 0)
|
||||
return -errno;
|
||||
|
||||
assert_se(sigemptyset(&mask) == 0);
|
||||
sigset_add_many(&mask, SIGINT, SIGTERM, -1);
|
||||
assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
|
||||
assert_se(sigemptyset(&mask) >= 0);
|
||||
assert_se(sigset_add_many(&mask, SIGINT, SIGTERM, -1) >= 0);
|
||||
assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) >= 0);
|
||||
|
||||
signal_fd = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC);
|
||||
if (signal_fd < 0)
|
||||
|
@ -1547,7 +1547,7 @@ static int manager_new(Manager **ret, int fd_ctrl, int fd_uevent, const char *cg
|
||||
udev_watch_restore(manager->udev);
|
||||
|
||||
/* block and listen to all signals on signalfd */
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, SIGHUP, SIGCHLD, -1) == 0);
|
||||
assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, SIGHUP, SIGCHLD, -1) >= 0);
|
||||
|
||||
r = sd_event_default(&manager->event);
|
||||
if (r < 0)
|
||||
|
Loading…
Reference in New Issue
Block a user