From: Lennart Poettering Date: Fri, 29 Dec 2017 17:52:20 +0000 (+0100) Subject: process-util: add new FORK_NEW_MOUNTNS flag to safe_fork() X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=2ad22ba29e9400833f977061a79e776f81e2b4e1;p=elogind.git process-util: add new FORK_NEW_MOUNTNS flag to safe_fork() That way we can move one more code location to use safe_fork() --- 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);