[ already applied to staging as it's a reasonably bad bug ]

Several places think that the current cgroup will be NULL rather
than "/" when we're in the root cgroup.  Fix that.

Signed-off-by: Serge Hallyn <serge.hal...@ubuntu.com>
---
 src/lxc/cgroup.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c
index a61d210..cd6cd1a 100644
--- a/src/lxc/cgroup.c
+++ b/src/lxc/cgroup.c
@@ -606,8 +606,7 @@ static int create_lxcgroups(const char *lxcgroup)
                 * TODO - handle case where lxcgroup has subdirs?  (i.e. 
build/l1)
                 * We probably only want to support that for /users/joe
                 */
-               ret = snprintf(path, MAXPATHLEN, "%s/%s",
-                              mntent_r.mnt_dir, lxcgroup ? lxcgroup : "lxc");
+               ret = snprintf(path, MAXPATHLEN, "%s/%s", mntent_r.mnt_dir, 
lxcgroup);
                if (ret < 0 || ret >= MAXPATHLEN)
                        goto fail;
                if (access(path, F_OK)) {
@@ -663,6 +662,8 @@ char *lxc_cgroup_path_create(const char *lxcgroup, const 
char *name)
 
        char buf[LARGE_MAXPATHLEN] = {0};
 
+       if (!lxcgroup || strlen(lxcgroup) == 0 || strcmp(lxcgroup, "/") == 0)
+               lxcgroup = "lxc";
        if (!allcgroups)
                return NULL;
 
@@ -702,12 +703,12 @@ again:
 
                /* find unused mnt_dir + lxcgroup + name + -$i */
                ret = snprintf(path, MAXPATHLEN, "%s/%s/%s%s", mntent_r.mnt_dir,
-                              lxcgroup ? lxcgroup : "lxc", name, tail);
+                              lxcgroup, name, tail);
                if (ret < 0 || ret >= MAXPATHLEN)
                        goto fail;
 
                INFO("lxcgroup %s name %s tail %s, makes path .%s.",
-                       lxcgroup ? lxcgroup : "lxc", name, tail, path);
+                       lxcgroup, name, tail, path);
 
                if (access(path, F_OK) == 0) goto next;
 
@@ -721,8 +722,7 @@ again:
        endmntent(file);
 
        // print out the cgpath part
-       ret = snprintf(path, MAXPATHLEN, "%s/%s%s",
-                      lxcgroup ? lxcgroup : "lxc", name, tail);
+       ret = snprintf(path, MAXPATHLEN, "%s/%s%s", lxcgroup, name, tail);
        if (ret < 0 || ret >= MAXPATHLEN) // can't happen
                goto fail;
 
-- 
1.8.3.2


------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to