From a3b6ad69ab246b0df462ffd8478969e9b5a4e4ec Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Mon, 1 Dec 2025 19:25:25 +0000 Subject: [PATCH] cgroup-util: fix cg_pid_get_user_unit() to actually query user units Refactor switched to the wrong implementation for this inline, breaking querying for user units Fixes https://github.com/systemd/systemd/issues/39949 Follow-up for 015025cba204de79c90e3cf7adf48505b556df4c --- src/basic/cgroup-util.h | 2 +- src/libsystemd/sd-login/test-login.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/basic/cgroup-util.h b/src/basic/cgroup-util.h index f494617ffa..20346c7f15 100644 --- a/src/basic/cgroup-util.h +++ b/src/basic/cgroup-util.h @@ -216,7 +216,7 @@ static inline int cg_pidref_get_unit(const PidRef *pidref, char **ret_unit) { } int cg_pid_get_user_unit_full(pid_t pid, char **ret_unit, char **ret_subgroup); static inline int cg_pid_get_user_unit(pid_t pid, char **ret_unit) { - return cg_pid_get_unit_full(pid, ret_unit, NULL); + return cg_pid_get_user_unit_full(pid, ret_unit, NULL); } int cg_pidref_get_user_unit_full(const PidRef *pidref, char **ret_unit, char **ret_subgroup); static inline int cg_pidref_get_user_unit(const PidRef *pidref, char **ret_unit) { diff --git a/src/libsystemd/sd-login/test-login.c b/src/libsystemd/sd-login/test-login.c index 7c2b68a5c7..2f15b029b0 100644 --- a/src/libsystemd/sd-login/test-login.c +++ b/src/libsystemd/sd-login/test-login.c @@ -59,6 +59,9 @@ TEST(login) { log_info("sd_pid_get_user_unit(0, …) → %s / \"%s\"", e(r), strnull(user_unit)); assert_se(IN_SET(r, 0, -ENODATA)); + /* Coverage for https://github.com/systemd/systemd/issues/39949 */ + assert_se(!unit || !user_unit || !streq(unit, user_unit)); + r = sd_pid_get_slice(0, &slice); log_info("sd_pid_get_slice(0, …) → %s / \"%s\"", e(r), strnull(slice)); assert_se(IN_SET(r, 0, -ENODATA));