From 2ad22ba29e9400833f977061a79e776f81e2b4e1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 29 Dec 2017 18:52:20 +0100 Subject: [PATCH] process-util: add new FORK_NEW_MOUNTNS flag to safe_fork() That way we can move one more code location to use safe_fork() --- src/basic/process-util.c | 5 ++++- src/basic/process-util.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/basic/process-util.c b/src/basic/process-util.c index c60ca7516..b468429a8 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -1213,7 +1213,10 @@ int safe_fork_full( if (sigprocmask(SIG_SETMASK, &ss, &saved_ss) < 0) return log_full_errno(prio, errno, "Failed to set signal mask: %m"); - pid = fork(); + if (flags & FORK_NEW_MOUNTNS) + pid = raw_clone(SIGCHLD|CLONE_NEWNS); + else + pid = fork(); if (pid < 0) { r = -errno; diff --git a/src/basic/process-util.h b/src/basic/process-util.h index f52f95ac1..652e4c341 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h @@ -182,6 +182,7 @@ typedef enum ForkFlags { FORK_REOPEN_LOG = 1U << 4, FORK_LOG = 1U << 5, FORK_WAIT = 1U << 6, + FORK_NEW_MOUNTNS = 1U << 7, } ForkFlags; int safe_fork_full(const char *name, const int except_fds[], size_t n_except_fds, ForkFlags flags, pid_t *ret_pid); -- 2.30.2