diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-03-03 23:55:30 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-03-03 23:55:30 +0100 |
commit | 430c18ed7f576fd9041b0a02e7c4210bdd020a25 (patch) | |
tree | 0ea2aa6c3d7c434c1c8b5dd2c91ca7b54a7771c4 /src/swap.c | |
parent | 2b590e135f53a1bd3e771bdc555f7bf28c4cd232 (diff) |
kill: always send SIGCONT after SIGTERM
When we kill a process to terminate it make sure to send SIGCONT to
ensure it is unpaused and processes the signal.
Diffstat (limited to 'src/swap.c')
-rw-r--r-- | src/swap.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/swap.c b/src/swap.c index 4ffe19f1e8..f59b0fb18d 100644 --- a/src/swap.c +++ b/src/swap.c @@ -660,9 +660,9 @@ static void swap_enter_signal(Swap *s, SwapState state, bool success) { state == SWAP_DEACTIVATING_SIGTERM) ? s->exec_context.kill_signal : SIGKILL; if (s->control_pid > 0) { - if (kill(s->exec_context.kill_mode == KILL_PROCESS_GROUP ? - -s->control_pid : - s->control_pid, sig) < 0 && errno != ESRCH) + if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ? + -s->control_pid : + s->control_pid, sig) < 0 && errno != ESRCH) log_warning("Failed to kill control process %li: %m", (long) s->control_pid); else @@ -681,7 +681,7 @@ static void swap_enter_signal(Swap *s, SwapState state, bool success) { if ((r = set_put(pid_set, LONG_TO_PTR(s->control_pid))) < 0) goto fail; - if ((r = cgroup_bonding_kill_list(s->meta.cgroup_bondings, sig, pid_set)) < 0) { + if ((r = cgroup_bonding_kill_list(s->meta.cgroup_bondings, sig, true, pid_set)) < 0) { if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) log_warning("Failed to kill control group: %s", strerror(-r)); } else if (r > 0) @@ -1301,7 +1301,7 @@ static int swap_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError * goto finish; } - if ((q = cgroup_bonding_kill_list(s->meta.cgroup_bondings, signo, pid_set)) < 0) + if ((q = cgroup_bonding_kill_list(s->meta.cgroup_bondings, signo, false, pid_set)) < 0) if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) r = q; } |