diff options
-rw-r--r-- | src/basic/process-util.c | 12 | ||||
-rw-r--r-- | src/basic/process-util.h | 4 | ||||
-rw-r--r-- | src/import/pull-common.c | 2 | ||||
-rw-r--r-- | src/machine/image-dbus.c | 2 | ||||
-rw-r--r-- | src/machine/operation.c | 2 |
5 files changed, 14 insertions, 8 deletions
diff --git a/src/basic/process-util.c b/src/basic/process-util.c index f2cea01979..4a7367cc92 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -528,14 +528,20 @@ int wait_for_terminate_and_warn(const char *name, pid_t pid, bool check_exit_cod return -EPROTO; } -void sigkill_wait(pid_t *pid) { +void sigkill_wait(pid_t pid) { + assert(pid > 1); + + if (kill(pid, SIGKILL) > 0) + (void) wait_for_terminate(pid, NULL); +} + +void sigkill_waitp(pid_t *pid) { if (!pid) return; if (*pid <= 1) return; - if (kill(*pid, SIGKILL) > 0) - (void) wait_for_terminate(*pid, NULL); + sigkill_wait(*pid); } int kill_and_sigcont(pid_t pid, int sig) { diff --git a/src/basic/process-util.h b/src/basic/process-util.h index ffd4bcb0ff..9f75088796 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h @@ -58,8 +58,8 @@ int get_process_ppid(pid_t pid, pid_t *ppid); int wait_for_terminate(pid_t pid, siginfo_t *status); int wait_for_terminate_and_warn(const char *name, pid_t pid, bool check_exit_code); -void sigkill_wait(pid_t *pid); -#define _cleanup_sigkill_wait_ _cleanup_(sigkill_wait) +void sigkill_wait(pid_t pid); +void sigkill_waitp(pid_t *pid); int kill_and_sigcont(pid_t pid, int sig); diff --git a/src/import/pull-common.c b/src/import/pull-common.c index d301d4d79e..dc4e4667a9 100644 --- a/src/import/pull-common.c +++ b/src/import/pull-common.c @@ -330,7 +330,7 @@ int pull_verify(PullJob *main_job, _cleanup_close_ int sig_file = -1; const char *p, *line; char sig_file_path[] = "/tmp/sigXXXXXX", gpg_home[] = "/tmp/gpghomeXXXXXX"; - _cleanup_sigkill_wait_ pid_t pid = 0; + _cleanup_(sigkill_waitp) pid_t pid = 0; bool gpg_home_created = false; int r; diff --git a/src/machine/image-dbus.c b/src/machine/image-dbus.c index ca38f61dd3..db0ed03b69 100644 --- a/src/machine/image-dbus.c +++ b/src/machine/image-dbus.c @@ -166,7 +166,7 @@ int bus_image_method_clone( r = operation_new(m, child, message, errno_pipe_fd[0]); if (r < 0) { - (void) sigkill_wait(&child); + (void) sigkill_wait(child); return r; } diff --git a/src/machine/operation.c b/src/machine/operation.c index 53e996b48f..e8564c29f7 100644 --- a/src/machine/operation.c +++ b/src/machine/operation.c @@ -104,7 +104,7 @@ Operation *operation_free(Operation *o) { safe_close(o->errno_fd); if (o->pid > 1) - (void) sigkill_wait(&o->pid); + (void) sigkill_wait(o->pid); sd_bus_message_unref(o->message); |