chiark / gitweb /
test: make it easier to override kernel version
[elogind.git] / src / login / logind-session.c
index e2f41d3e575e81d988d1cb216cbb814edaf1a6a6..662273b07f6a22d69dbdd1fdb5dd4dbeb7fae4a3 100644 (file)
@@ -436,15 +436,14 @@ static int session_create_one_group(Session *s, const char *controller, const ch
         int r;
 
         assert(s);
-        assert(controller);
         assert(path);
 
         if (s->leader > 0) {
                 r = cg_create_and_attach(controller, path, s->leader);
                 if (r < 0)
-                        r = cg_create(controller, path);
+                        r = cg_create(controller, path, NULL);
         } else
-                r = cg_create(controller, path);
+                r = cg_create(controller, path, NULL);
 
         if (r < 0)
                 return r;
@@ -466,7 +465,18 @@ static int session_create_cgroup(Session *s) {
         assert(s->user->cgroup_path);
 
         if (!s->cgroup_path) {
-                if (asprintf(&p, "%s/%s", s->user->cgroup_path, s->id) < 0)
+                _cleanup_free_ char *name = NULL, *escaped = NULL;
+
+                name = strappend(s->id, ".session");
+                if (!name)
+                        return log_oom();
+
+                escaped = cg_escape(name);
+                if (!escaped)
+                        return log_oom();
+
+                p = strjoin(s->user->cgroup_path, "/", escaped, NULL);
+                if (!p)
                         return log_oom();
         } else
                 p = s->cgroup_path;