]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
libcgroup: Check if the data structures have been initialized for walk_tree
authorDhaval Giani <dhaval@linux.vnet.ibm.com>
Tue, 3 Mar 2009 14:51:03 +0000 (20:21 +0530)
committerDhaval Giani <dhaval@linux.vnet.ibm.com>
Wed, 4 Mar 2009 09:52:49 +0000 (15:22 +0530)
The test for cgroup_init() was not being done by the walk tree APIs.
With this it is possible for it to run without cgroup_init() being
called and having mysterious failures.

Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
api.c

diff --git a/api.c b/api.c
index ac5fcbb27460319e7ea3570d28b57d04cab13bda..336e14ad6bdbb39bc6e725c44ff0a184130b0e77 100644 (file)
--- a/api.c
+++ b/api.c
@@ -2251,6 +2251,9 @@ static int cg_walk_node(FTS *fts, FTSENT *ent, const int depth,
        int ret = 0;
        int base_level;
 
+       if (!cgroup_initialized)
+               return ECGROUPNOTINITIALIZED;
+
        cgroup_dbg("seeing file %s\n", ent->fts_path);
 
        info->path = ent->fts_name;
@@ -2291,6 +2294,9 @@ int cgroup_walk_tree_next(const int depth, void **handle,
        FTS *fts = *(FTS **)handle;
        FTSENT *ent;
 
+       if (!cgroup_initialized)
+               return ECGROUPNOTINITIALIZED;
+
        if (!handle)
                return ECGINVAL;
        ent = fts_read(fts);
@@ -2308,6 +2314,9 @@ int cgroup_walk_tree_end(void **handle)
        int ret = 0;
        FTS *fts = *(FTS **)handle;
 
+       if (!cgroup_initialized)
+               return ECGROUPNOTINITIALIZED;
+
        if (!handle)
                return ECGINVAL;
        fts_close(fts);
@@ -2328,6 +2337,9 @@ int cgroup_walk_tree_begin(char *controller, char *base_path, const int depth,
        FTSENT *ent;
        FTS *fts;
 
+       if (!cgroup_initialized)
+               return ECGROUPNOTINITIALIZED;
+
        if (!cg_build_path(base_path, full_path, controller))
                return ECGOTHER;