From: Ken'ichi Ohmichi Date: Wed, 13 May 2009 00:59:31 +0000 (+0900) Subject: Fix the error handling if failing to open/etc/cgrules.conf. X-Git-Tag: v0.34~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a136cb2d61f43bdd00076374ac174f70b7e31c42;p=thirdparty%2Flibcgroup.git 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 Signed-off-by: Dhaval Giani --- diff --git a/src/api.c b/src/api.c index e29c966c..4902c456 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; }