From 450f498061caa0fda5c86ad86d197b4e929c7dfb Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Mon, 10 Jul 2023 10:19:29 +0200 Subject: [PATCH] Fix #361: cgroup move fail if starting service as non-root Regression in v4.4 Signed-off-by: Joachim Wiberg --- src/service.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/service.c b/src/service.c index 9203f29c..5d9dd3ab 100644 --- a/src/service.c +++ b/src/service.c @@ -575,7 +575,6 @@ static int service_start(svc_t *svc) int result = 0, do_progress = 1; char cmdline[CMD_SIZE] = ""; sigset_t nmask, omask; - char grnam[80]; pid_t pid; size_t i; @@ -644,19 +643,22 @@ static int service_start(svc_t *svc) goto fail; } if (pid > 1) { + char grnam[80]; + svc->pid = pid; svc->start_time = jiffies(); + + if (svc_is_tty(svc)) + cgroup_user("getty", pid); + else + cgroup_service(group_name(svc, grnam, sizeof(grnam)), pid, &svc->cgroup); + } else if (pid == 0) { char *args[MAX_NUM_SVC_ARGS + 1]; int status; - pid = getpid(); - if (svc_is_tty(svc)) { - cgroup_user("getty", pid); - } else { - cgroup_service(group_name(svc, grnam, sizeof(grnam)), pid, &svc->cgroup); + if (!svc_is_tty(svc)) redirect(svc); - } if (!svc_is_sysv(svc)) { wordexp_t we = { 0 };