From: Dhaval Giani Date: Tue, 3 Mar 2009 14:51:03 +0000 (+0530) Subject: libcgroup: Check if the data structures have been initialized for walk_tree X-Git-Tag: v0.34~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8594444bf340b98a8d0eb22a4af9c3ce7157d1ba;p=thirdparty%2Flibcgroup.git libcgroup: Check if the data structures have been initialized for walk_tree 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 --- diff --git a/api.c b/api.c index ac5fcbb2..336e14ad 100644 --- 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;