summaryrefslogtreecommitdiff
path: root/libmemtrack
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2013-09-30 13:09:02 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2013-12-17 18:39:09 -0800
commit76d10541daa644d2b8bbd1c7f5052dcd61c931ae (patch)
tree3752e5e47f6b6d36923db69711bea8a537974abb /libmemtrack
parent56225c143b5ab6d7fdec1faf0dceaf1f89049914 (diff)
downloaddisplay-76d10541daa644d2b8bbd1c7f5052dcd61c931ae.tar.gz
fix fd leak in memtrack.msm8960
Close smaps_fd when exiting function. Bug: 11007903 Change-Id: I4a9fcd1e84aae195d229e5dd11f99ccb9f6f5006
Diffstat (limited to 'libmemtrack')
-rw-r--r--libmemtrack/kgsl.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libmemtrack/kgsl.c b/libmemtrack/kgsl.c
index 48437420..6dd4e27a 100644
--- a/libmemtrack/kgsl.c
+++ b/libmemtrack/kgsl.c
@@ -47,7 +47,7 @@ int kgsl_memtrack_get_memory(pid_t pid, enum memtrack_type type,
size_t allocated_records = min(*num_records, ARRAY_SIZE(record_templates));
int i;
FILE *fp;
- FILE *smaps_fp;
+ FILE *smaps_fp = NULL;
char line[1024];
char tmp[128];
size_t accounted_size = 0;
@@ -74,6 +74,7 @@ int kgsl_memtrack_get_memory(pid_t pid, enum memtrack_type type,
snprintf(tmp, sizeof(tmp), "/proc/%d/smaps", pid);
smaps_fp = fopen(tmp, "r");
if (smaps_fp == NULL) {
+ fclose(fp);
return -errno;
}
}
@@ -145,6 +146,8 @@ int kgsl_memtrack_get_memory(pid_t pid, enum memtrack_type type,
records[1].size_in_bytes = unaccounted_size;
}
+ if (smaps_fp)
+ fclose(smaps_fp);
fclose(fp);
return 0;