summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKen'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp>2009-05-13 09:59:31 +0900
committerDhaval Giani <dhaval@linux.vnet.ibm.com>2009-05-18 13:44:39 +0530
commita136cb2d61f43bdd00076374ac174f70b7e31c42 (patch)
tree32b9056bec53bf0357c653d4ed0cd82e6d250514
parente9c5c4ca18d33a1ae6e4b5c6f3c6076f34491d15 (diff)
downloadlibcg-a136cb2d61f43bdd00076374ac174f70b7e31c42.tar.gz
libcg-a136cb2d61f43bdd00076374ac174f70b7e31c42.tar.xz
libcg-a136cb2d61f43bdd00076374ac174f70b7e31c42.zip
Fix the error handling if failing to open/etc/cgrules.conf.
Hi, If failing to open /etc/cgrules.conf in cgroup_parse_rules(), rl_lock should be unlocked. This patch fixes the code for doing it. Thanks Ken'ichi Ohmichi Signed-off-by: Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
-rw-r--r--src/api.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/api.c b/src/api.c
index e29c966..4902c45 100644
--- a/src/api.c
+++ b/src/api.c
@@ -318,7 +318,8 @@ static int cgroup_parse_rules(bool cache, uid_t muid, gid_t mgid)
" error: %s\n", CGRULES_CONF_FILE,
strerror(errno));
last_errno = errno;
- goto finish;
+ ret = ECGOTHER;
+ goto unlock;
}
buff = calloc(CGROUP_RULE_MAXLINE, sizeof(char));
@@ -326,7 +327,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, gid_t mgid)
cgroup_dbg("Out of memory? Error: %s\n", strerror(errno));
last_errno = errno;
ret = ECGOTHER;
- goto close_unlock;
+ goto close;
}
/* Determine which list we're using. */
@@ -542,10 +543,10 @@ parsefail:
cleanup:
free(buff);
-close_unlock:
+close:
fclose(fp);
+unlock:
pthread_rwlock_unlock(&rl_lock);
-finish:
return ret;
}