From: Lennart Poettering Date: Thu, 22 May 2025 16:35:25 +0000 (+0200) Subject: cgroup: port some code over to path_startswith_full() X-Git-Tag: v258-rc1~512^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=482107724f64cb8dd24db3e65b6ea3151a330301;p=thirdparty%2Fsystemd.git cgroup: port some code over to path_startswith_full() --- diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index d8e94c3ed9d..b68cab68a09 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -959,13 +959,12 @@ int cg_get_root_path(char **ret_path) { } int cg_shift_path(const char *cgroup, const char *root, const char **ret_shifted) { - _cleanup_free_ char *rt = NULL; - char *p; int r; assert(cgroup); assert(ret_shifted); + _cleanup_free_ char *rt = NULL; if (!root) { /* If the root was specified let's use that, otherwise * let's determine it from PID 1 */ @@ -977,12 +976,7 @@ int cg_shift_path(const char *cgroup, const char *root, const char **ret_shifted root = rt; } - p = path_startswith(cgroup, root); - if (p && p > cgroup) - *ret_shifted = p - 1; - else - *ret_shifted = cgroup; - + *ret_shifted = path_startswith_full(cgroup, root, PATH_STARTSWITH_RETURN_LEADING_SLASH) ?: cgroup; return 0; } diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 61a034641b3..e9dade8eb34 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -2808,19 +2808,13 @@ static int unit_prune_cgroup_via_bus(Unit *u) { return -EOWNERDEAD; /* Determine this unit's cgroup path relative to our cgroup root */ - const char *pp = path_startswith(crt->cgroup_path, u->manager->cgroup_root); + const char *pp = path_startswith_full( + crt->cgroup_path, + u->manager->cgroup_root, + PATH_STARTSWITH_RETURN_LEADING_SLASH); if (!pp) return -EINVAL; - _cleanup_free_ char *absolute = NULL; - if (!path_is_absolute(pp)) { /* RemoveSubgroupFromUnit() wants an absolute path */ - absolute = strjoin("/", pp); - if (!absolute) - return -ENOMEM; - - pp = absolute; - } - r = bus_call_method(u->manager->system_bus, bus_systemd_mgr, "RemoveSubgroupFromUnit",