From beebf12bbf0bf6c5ee6db110ea1ca470ac2d8e16 Mon Sep 17 00:00:00 2001 From: Serge Hallyn Date: Wed, 29 Jan 2014 16:17:09 +0000 Subject: [PATCH] [PATCH cgmanager chown: don't do a gratuitous fork MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit userns_exec_1() clones a new task to manipulate. We don't need to fork before calling that. Signed-off-by: Serge Hallyn Acked-by: Stéphane Graber --- src/lxc/cgmanager.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/lxc/cgmanager.c b/src/lxc/cgmanager.c index 0fb57cf64..76e628d85 100644 --- a/src/lxc/cgmanager.c +++ b/src/lxc/cgmanager.c @@ -246,7 +246,6 @@ static int chown_cgroup_wrapper(void *data) static bool chown_cgroup(const char *controller, const char *cgroup_path, struct lxc_conf *conf) { - pid_t pid; struct chown_data data; data.controller = controller; data.cgroup_path = cgroup_path; @@ -257,20 +256,11 @@ static bool chown_cgroup(const char *controller, const char *cgroup_path, return true; } - if ((pid = fork()) < 0) { - SYSERROR("fork"); + if (userns_exec_1(conf, chown_cgroup_wrapper, &data) < 0) { + ERROR("Error requesting cgroup chown in new namespace"); return false; } - if (pid > 0) { - if (wait_for_pid(pid)) { - ERROR("Error chowning cgroup"); - return false; - } - return true; - } - if (userns_exec_1(conf, chown_cgroup_wrapper, &data) < 0) - exit(1); - exit(0); + return true; } struct cgm_data { -- 2.47.2