summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKen'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp>2010-01-28 11:15:48 +0530
committerBalbir Singh <balbir@linux.vnet.ibm.com>2010-01-28 11:15:48 +0530
commitc05a25c145d1584299ecdfe8f941bc8658c809b7 (patch)
tree2512be84f6bb60af50c0ff6dbbf5853e66514b76
parenta71b780653da26da0d125e75e9255e124ade966d (diff)
downloadlibcg-c05a25c145d1584299ecdfe8f941bc8658c809b7.tar.gz
libcg-c05a25c145d1584299ecdfe8f941bc8658c809b7.tar.xz
libcg-c05a25c145d1584299ecdfe8f941bc8658c809b7.zip
[PATCH-v2] Add the write error handling to cg_set_control_value().
Changelog since v1: o Use fopen/fprintf/fclose instead of open/write/close. o Add the error handling against fclose. cg_set_control_value() is the function for setting a value to a file of cgroup file system. And current function does not handle the error of writing to a file. So we cannot know whether setting value is enable or not. This patch add the error handling for knowing it. Signed-off-by: Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com>
-rw-r--r--src/api.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/api.c b/src/api.c
index 4a7185b..cd2e298 100644
--- a/src/api.c
+++ b/src/api.c
@@ -1089,8 +1089,15 @@ static int cg_set_control_value(char *path, char *val)
return ECGROUPVALUENOTEXIST;
}
- fprintf(control_file, "%s", val);
- fclose(control_file);
+ if (fprintf(control_file, "%s", val) < 0) {
+ last_errno = errno;
+ fclose(control_file);
+ return ECGOTHER;
+ }
+ if (fclose(control_file) < 0) {
+ last_errno = errno;
+ return ECGOTHER;
+ }
return 0;
}