]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
Fix the error handling if failing to open/etc/cgrules.conf.
authorKen'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp>
Wed, 13 May 2009 00:59:31 +0000 (09:59 +0900)
committerDhaval Giani <dhaval@linux.vnet.ibm.com>
Mon, 18 May 2009 08:14:39 +0000 (13:44 +0530)
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>
src/api.c

index e29c966c8de5db6922375651f02eed2f314b7bd3..4902c456697e0d79ac39ba9a3fcf71267a0e618f 100644 (file)
--- 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;
 }