core/execute: warn when threaded mode is detected

Signed-off-by: zhaoxiaohu <zhaoxiaohu@kuaishou.com>
This commit is contained in:
zhaoxiaohu 2024-09-11 17:10:41 +08:00 committed by zhangyao
parent c6bc10fa4e
commit 3a1fbd24de
2 changed files with 57 additions and 1 deletions

View File

@ -0,0 +1,50 @@
From 702cf08fceaa7df8476e56e3648b211e58700bc0 Mon Sep 17 00:00:00 2001
From: Yu Watanabe <watanabe.yu+github@gmail.com>
Date: Sun, 13 Feb 2022 20:52:53 +0900
Subject: [PATCH] core/execute: warn when threaded mode is detected
Prompted by #22486.
Reference: https://github.com/systemd/systemd/pull/22498/commits/702cf08fceaa7df8476e56e3648b211e58700bc0
Signed-off-by: rpm-build <rpm-build>
Signed-off-by: yuwang <yuwang@kuaishou.com>
---
src/core/execute.c | 6 ++++++
src/shared/cgroup-setup.c | 3 +++
2 files changed, 9 insertions(+)
diff --git a/src/core/execute.c b/src/core/execute.c
index 9185a6f..10665b1 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -3919,6 +3919,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 f197f71..391b32f 100644
--- a/src/shared/cgroup-setup.c
+++ b/src/shared/cgroup-setup.c
@@ -268,6 +268,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;
--
2.33.0

View File

@ -25,7 +25,7 @@
Name: systemd Name: systemd
Url: https://systemd.io/ Url: https://systemd.io/
Version: 249 Version: 249
Release: 94 Release: 95
License: MIT and LGPLv2+ and GPLv2+ License: MIT and LGPLv2+ and GPLv2+
Summary: System and Service Manager Summary: System and Service Manager
@ -697,6 +697,8 @@ Patch6644: backport-docs-remove-dev-tty-confusion.patch
Patch6645: backport-wait-online-make-manager_link_is_online-return-0-whe.patch Patch6645: backport-wait-online-make-manager_link_is_online-return-0-whe.patch
Patch6646: backport-psi-util-fix-error-handling.patch Patch6646: backport-psi-util-fix-error-handling.patch
Patch6647: backport-pid1-cgroup-show-ignore-EOPNOTSUPP-in-cg_read_pid.patch Patch6647: backport-pid1-cgroup-show-ignore-EOPNOTSUPP-in-cg_read_pid.patch
Patch6648: backport-cgroup-util-introduce-cg_is_threaded.patch
Patch6649: backport-core-execute-warn-when-threaded-mode-is-detected.patch
Patch9001: update-rtc-with-system-clock-when-shutdown.patch Patch9001: update-rtc-with-system-clock-when-shutdown.patch
Patch9002: udev-add-actions-while-rename-netif-failed.patch Patch9002: udev-add-actions-while-rename-netif-failed.patch
@ -2211,6 +2213,10 @@ grep -q -E '^KEYMAP="?fi-latin[19]"?' /etc/vconsole.conf 2>/dev/null &&
/usr/bin/systemd-cryptenroll /usr/bin/systemd-cryptenroll
%changelog %changelog
* Mon Dec 09 2024 zhangyao <zhangyao108@huawei.com> - 249-95
- add backport-cgroup-util-introduce-cg_is_threaded.patch
backport-core-execute-warn-when-threaded-mode-is-detected.patch
* Wed Dec 04 2024 zhangyao <zhangyao108@huawei.com> - 249-94 * Wed Dec 04 2024 zhangyao <zhangyao108@huawei.com> - 249-94
- add backport-pid1-cgroup-show-ignore-EOPNOTSUPP-in-cg_read_pid.patch - add backport-pid1-cgroup-show-ignore-EOPNOTSUPP-in-cg_read_pid.patch