From: Luca Boccassi Date: Mon, 1 Dec 2025 19:25:25 +0000 (+0000) Subject: cgroup-util: fix cg_pid_get_user_unit() to actually query user units X-Git-Tag: v259-rc3~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a3b6ad69ab246b0df462ffd8478969e9b5a4e4ec;p=thirdparty%2Fsystemd.git 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 --- diff --git a/src/basic/cgroup-util.h b/src/basic/cgroup-util.h index f494617ffac..20346c7f155 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 7c2b68a5c78..2f15b029b00 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));