From 8594444bf340b98a8d0eb22a4af9c3ce7157d1ba Mon Sep 17 00:00:00 2001 From: Dhaval Giani Date: Tue, 3 Mar 2009 20:21:03 +0530 Subject: [PATCH] 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 --- api.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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; -- 2.47.2