From 180ffccf79d1a1a2c3eb644e26f6d87b1cbcfffd Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sat, 14 Feb 2026 20:43:13 +0000 Subject: [PATCH] instance: use mkdir_p helper Use mkdir_p() libubox helper function to create cgroup instance directories. This simplifies instance_add_cgroup() and also avoids returning an error in case the service directory already exists. Fixes: openwrt/procd#31 Fixes: 7e5b324 ("instance: check length of names when creating cgroups") Signed-off-by: Daniel Golle --- service/instance.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/service/instance.c b/service/instance.c index c559cda..a456b8c 100644 --- a/service/instance.c +++ b/service/instance.c @@ -30,6 +30,7 @@ #include #include +#include #include "../procd.h" #include "../rcS.h" @@ -570,22 +571,12 @@ instance_add_cgroup(const char *service, const char *instance) if (stat("/sys/fs/cgroup/cgroup.subtree_control", &sb)) return -ENOENT; - mkdir(CGROUP_BASEDIR, 0700); - - ret = snprintf(cgnamebuf, sizeof(cgnamebuf), "%s/%s", CGROUP_BASEDIR, - service); - if (ret >= sizeof(cgnamebuf)) - return -ENAMETOOLONG; - - if (mkdir(cgnamebuf, 0700)) - return -EPERM; - ret = snprintf(cgnamebuf, sizeof(cgnamebuf), "%s/%s/%s", CGROUP_BASEDIR, service, instance); if (ret >= sizeof(cgnamebuf)) return -ENAMETOOLONG; - if (mkdir(cgnamebuf, 0700)) + if (mkdir_p(cgnamebuf, 0700)) return -EPERM; if (strlen(cgnamebuf) + strlen(cgroup_procs) >= sizeof(cgnamebuf))