From 3bb826b22bd649082ff4cf50c5c83b3c5141bf8a Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Tue, 21 Mar 2023 16:32:28 +0100 Subject: [PATCH] Ensure all a process' children are in the same cgroup The logger redirection process was sometimes in the init group instead of the system// group. This was due to the parent PID being moved after the logger was forked. Signed-off-by: Joachim Wiberg --- src/service.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/service.c b/src/service.c index 14bb3b09..2869d40b 100644 --- a/src/service.c +++ b/src/service.c @@ -657,8 +657,13 @@ static int service_start(svc_t *svc) char *args[MAX_NUM_SVC_ARGS + 1]; int status; - if (!svc_is_tty(svc)) + pid = getpid(); + if (svc_is_tty(svc)) { + cgroup_user("getty", pid); + } else { + cgroup_service(group_name(svc, grnam, sizeof(grnam)), pid, &svc->cgroup); redirect(svc); + } if (!svc_is_sysv(svc)) { wordexp_t we = { 0 }; @@ -806,11 +811,6 @@ static int service_start(svc_t *svc) dbg("Starting PID %d: %s", svc->pid, cmdline); } - if (svc_is_tty(svc)) - cgroup_user("getty", pid); - else - cgroup_service(group_name(svc, grnam, sizeof(grnam)), pid, &svc->cgroup); - if (!svc_is_sysv(svc)) logit(LOG_CONSOLE | LOG_NOTICE, "Starting %s[%d]", svc_ident(svc, NULL, 0), pid);