summaryrefslogtreecommitdiff
path: root/src/shared/cgroup-label.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-04-08 18:22:47 +0200
committerLennart Poettering <lennart@poettering.net>2013-04-08 18:22:47 +0200
commit974efc46586854b1f23ccf153b36199c77919de6 (patch)
treec8bfec230889655c876667cfba5ddf6036ff8335 /src/shared/cgroup-label.c
parentd82d87dac1233ddd109437844321645be5bcd4cb (diff)
cgroup: always keep access mode of 'tasks' and 'cgroup.procs' files in cgroup directories in sync
Diffstat (limited to 'src/shared/cgroup-label.c')
-rw-r--r--src/shared/cgroup-label.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/shared/cgroup-label.c b/src/shared/cgroup-label.c
index beeeec5830..995e4c57cd 100644
--- a/src/shared/cgroup-label.c
+++ b/src/shared/cgroup-label.c
@@ -37,7 +37,7 @@
#include "mkdir.h"
int cg_create(const char *controller, const char *path) {
- char *fs;
+ _cleanup_free_ char *fs = NULL;
int r;
assert(controller);
@@ -48,19 +48,18 @@ int cg_create(const char *controller, const char *path) {
return r;
r = mkdir_parents_label(fs, 0755);
+ if (r < 0)
+ return r;
- if (r >= 0) {
- if (mkdir(fs, 0755) >= 0)
- r = 1;
- else if (errno == EEXIST)
- r = 0;
- else
- r = -errno;
- }
+ if (mkdir(fs, 0755) < 0) {
- free(fs);
+ if (errno == EEXIST)
+ return 0;
- return r;
+ return -errno;
+ }
+
+ return 1;
}
int cg_create_and_attach(const char *controller, const char *path, pid_t pid) {
@@ -70,13 +69,14 @@ int cg_create_and_attach(const char *controller, const char *path, pid_t pid) {
assert(path);
assert(pid >= 0);
- if ((r = cg_create(controller, path)) < 0)
+ r = cg_create(controller, path);
+ if (r < 0)
return r;
- if ((q = cg_attach(controller, path, pid)) < 0)
+ q = cg_attach(controller, path, pid);
+ if (q < 0)
return q;
/* This does not remove the cgroup on failure */
-
return r;
}