]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
config: systemd: Add a return code to cgroup_set_default_systemd_cgroup()
authorTom Hromatka <tom.hromatka@oracle.com>
Thu, 18 May 2023 13:14:55 +0000 (07:14 -0600)
committerTom Hromatka <tom.hromatka@oracle.com>
Tue, 23 May 2023 21:43:03 +0000 (15:43 -0600)
Add a return code to cgroup_set_default_systemd_cgroup().  This is
critical for users of the libcgroup C API, as they need to be certain
that a default slice/scope is set.  If they mistakenly think one is
set when it is not, then they could erroneously operate on the root
cgroup.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
include/libcgroup/systemd.h
src/config.c

index b2e55c692fe13c9e0a3076b235c9ff8e85fe94e9..ab06128184a12d97851b4e8fb0e52266165f07b3 100644 (file)
@@ -86,8 +86,10 @@ int cgroup_create_scope2(struct cgroup *cgroup, int ignore_ownership,
  * path, if available.
  *
  * The path is relative to cgroup root (default: /sys/fs/cgroup)
+ *
+ * @return 1 if a valid default slice/scope is set, 0 in all other cases
  */
-void cgroup_set_default_systemd_cgroup(void);
+int cgroup_set_default_systemd_cgroup(void);
 
 /**
  * Parse the systemd delegation settings from the configuration file
index 80c09ece436e46f305ad52a8399081f078701631..83b7a955e9c15d8b6cfb5bc0dd809d119d662502 100644 (file)
@@ -2247,7 +2247,7 @@ err:
        return exists;
 }
 
-void cgroup_set_default_systemd_cgroup(void)
+int cgroup_set_default_systemd_cgroup(void)
 {
        FILE *systemd_def_cgrp_f;
        size_t len;
@@ -2270,12 +2270,14 @@ void cgroup_set_default_systemd_cgroup(void)
 
        if (systemd_default_cgroup_exists()) {
                pthread_rwlock_unlock(&systemd_default_cgroup_lock);
-               return;
+               return 1;
        }
 err:
        pthread_rwlock_unlock(&systemd_default_cgroup_lock);
        cgroup_dbg(", continuing without systemd default cgroup.\n", systemd_default_cgroup);
        systemd_default_cgroup[0] = '\0';
+
+       return 0;
 }
 #else
 int cgroup_add_systemd_opts(const char * const config, const char * const value)
@@ -2290,5 +2292,8 @@ int cgroup_alloc_systemd_opts(const char * const config, const char * const valu
 
 void cgroup_cleanup_systemd_opts(void) { }
 
-void cgroup_set_default_systemd_cgroup(void) { }
+int cgroup_set_default_systemd_cgroup(void)
+{
+       return 0;
+}
 #endif