diff options
author | Colin Cross <ccross@android.com> | 2014-08-20 14:11:13 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2014-08-20 14:11:13 -0700 |
commit | c15dd044705aa86f63b2642c1439d5f943a80d18 (patch) | |
tree | f9e818f6742117f94440c219f71d0d8521a586fc /libprocessgroup | |
parent | 342a2264b96ab05dc8fdbfa8bbe354ce2f4b06ca (diff) | |
download | system_core-c15dd044705aa86f63b2642c1439d5f943a80d18.zip system_core-c15dd044705aa86f63b2642c1439d5f943a80d18.tar.gz system_core-c15dd044705aa86f63b2642c1439d5f943a80d18.tar.bz2 |
processgroup: close directories opened by removeAllProcessGroups()
removeAllProcessGroups and removeUidProcessGroups were calling
opendir, but never called closedir. This would leave a leaked
file descriptor for every /acct/uid_* directory that existed
at boot.
Change-Id: Ia08eccd42d6ad7a6c1c78402519ac2e53b4fc83a
Diffstat (limited to 'libprocessgroup')
-rw-r--r-- | libprocessgroup/processgroup.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libprocessgroup/processgroup.cpp b/libprocessgroup/processgroup.cpp index c32e741..f7bc2cd 100644 --- a/libprocessgroup/processgroup.cpp +++ b/libprocessgroup/processgroup.cpp @@ -171,6 +171,7 @@ static void removeUidProcessGroups(const char *uid_path) SLOGV("removing %s\n", path); rmdir(path); } + closedir(uid); } } @@ -180,8 +181,7 @@ void removeAllProcessGroups() DIR *root = opendir(PROCESSGROUP_CGROUP_PATH); if (root == NULL) { SLOGE("failed to open %s: %s", PROCESSGROUP_CGROUP_PATH, strerror(errno)); - } - if (root != NULL) { + } else { struct dirent cur; struct dirent *dir; while ((readdir_r(root, &cur, &dir) == 0) && dir) { @@ -199,6 +199,7 @@ void removeAllProcessGroups() SLOGV("removing %s\n", path); rmdir(path); } + closedir(root); } } |