diff options
Diffstat (limited to 'src/shared/cgroup-label.c')
-rw-r--r-- | src/shared/cgroup-label.c | 28 |
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; } |