diff options
author | Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> | 2009-05-13 09:59:31 +0900 |
---|---|---|
committer | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2009-05-18 13:44:39 +0530 |
commit | a136cb2d61f43bdd00076374ac174f70b7e31c42 (patch) | |
tree | 32b9056bec53bf0357c653d4ed0cd82e6d250514 /src | |
parent | e9c5c4ca18d33a1ae6e4b5c6f3c6076f34491d15 (diff) | |
download | libcg-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>
Diffstat (limited to 'src')
-rw-r--r-- | src/api.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -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; } |