]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
cgmanager: fix obvious braindeadnesses
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Thu, 16 Jan 2014 20:44:48 +0000 (14:44 -0600)
committerSerge Hallyn <serge.hallyn@ubuntu.com>
Thu, 16 Jan 2014 20:46:33 +0000 (14:46 -0600)
1. don't return bools for int-return functions
2. copy the filename to controller before using it
3. use full filename not just the key to pass to cgmanager

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
src/lxc/cgmanager.c

index 14d753f8a39f9aa8a1539149455d9c5604d2203f..a5d5e5569ebae7985f588eb9838f25c0f3b43109 100644 (file)
@@ -249,31 +249,28 @@ int cgm_get(const char *filename, char *value, size_t len, const char *name, con
        char *result, *controller, *key, *cgroup;
 
        controller = alloca(strlen(filename)+1);
+       strcpy(controller, filename);
        key = strchr(controller, '.');
        if (!key)
-               return false;
+               return -1;
        *key = '\0';
-       key++;
 
        /* use the command interface to look for the cgroup */
        cgroup = lxc_cmd_get_cgroup_path(name, lxcpath, controller);
-       if (!cgroup) {
-               ERROR("Failed to get cgroup for controller %s for %s:%s",
-                       controller, lxcpath, name);
-               return false;
-       }
-       if (cgmanager_get_value_sync(NULL, cgroup_manager, controller, cgroup, key, &result) != 0) {
+       if (!cgroup)
+               return -1;
+       if (cgmanager_get_value_sync(NULL, cgroup_manager, controller, cgroup, filename, &result) != 0) {
                ERROR("Error getting value for %s from cgmanager for cgroup %s (%s:%s)",
                        filename, cgroup, lxcpath, name);
                free(cgroup);
-               return false;
+               return -1;
        }
        free(cgroup);
        strncpy(value, result, len);
        if (strlen(result) >= len)
                value[len-1] = '\0';
        free(result);
-       return true;
+       return len;
 }
 
 int cgm_set(const char *filename, const char *value, const char *name, const char *lxcpath)
@@ -281,27 +278,27 @@ int cgm_set(const char *filename, const char *value, const char *name, const cha
        char *controller, *key, *cgroup;
 
        controller = alloca(strlen(filename)+1);
+       strcpy(controller, filename);
        key = strchr(controller, '.');
        if (!key)
-               return false;
+               return -1;
        *key = '\0';
-       key++;
 
        /* use the command interface to look for the cgroup */
        cgroup = lxc_cmd_get_cgroup_path(name, lxcpath, controller);
        if (!cgroup) {
                ERROR("Failed to get cgroup for controller %s for %s:%s",
                        controller, lxcpath, name);
-               return false;
+               return -1;
        }
-       if (cgmanager_set_value_sync(NULL, cgroup_manager, controller, cgroup, key, value) != 0) {
+       if (cgmanager_set_value_sync(NULL, cgroup_manager, controller, cgroup, filename, value) != 0) {
                ERROR("Error setting value for %s from cgmanager for cgroup %s (%s:%s)",
                        filename, cgroup, lxcpath, name);
                free(cgroup);
-               return false;
+               return -1;
        }
        free(cgroup);
-       return true;
+       return 0;
 }
 
 /*
@@ -365,9 +362,9 @@ static int cgm_unfreeze_fromhandler(struct lxc_handler *handler)
        if (cgmanager_set_value_sync(NULL, cgroup_manager, "freezer", d->cgroup_path,
                        "freezer.state", "THAWED") != 0) {
                ERROR("Error unfreezing %s", d->cgroup_path);
-               return false;
+               return -1;
        }
-       return true;
+       return 0;
 }
 
 static struct cgroup_ops cgmanager_ops = {