From: Yu Watanabe Date: Sun, 13 Feb 2022 11:52:53 +0000 (+0900) Subject: core/execute: warn when threaded mode is detected X-Git-Tag: v251-rc1~276^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=702cf08fceaa7df8476e56e3648b211e58700bc0;p=thirdparty%2Fsystemd.git core/execute: warn when threaded mode is detected Prompted by #22486. --- diff --git a/src/core/execute.c b/src/core/execute.c index 380755eb09b..72f3534908a 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -4250,6 +4250,12 @@ static int exec_child( } r = cg_attach_everywhere(params->cgroup_supported, p, 0, NULL, NULL); + if (r == -EUCLEAN) { + *exit_status = EXIT_CGROUP; + return log_unit_error_errno(unit, r, "Failed to attach process to cgroup %s " + "because the cgroup or one of its parents or " + "siblings is in the threaded mode: %m", p); + } if (r < 0) { *exit_status = EXIT_CGROUP; return log_unit_error_errno(unit, r, "Failed to attach to cgroup %s: %m", p); diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c index 8bda66ca36a..38a6755d178 100644 --- a/src/shared/cgroup-setup.c +++ b/src/shared/cgroup-setup.c @@ -346,6 +346,9 @@ int cg_attach(const char *controller, const char *path, pid_t pid) { xsprintf(c, PID_FMT "\n", pid); r = write_string_file(fs, c, WRITE_STRING_FILE_DISABLE_BUFFER); + if (r == -EOPNOTSUPP && cg_is_threaded(controller, path) > 0) + /* When the threaded mode is used, we cannot read/write the file. Let's return recognizable error. */ + return -EUCLEAN; if (r < 0) return r;