As Kees pointed out, write() errors can be delayed and returned as
close() errors.  So don't ignore error on close when writing the
userns id mapping.

Signed-off-by: Serge Hallyn <serge.hal...@ubuntu.com>
---
 src/lxc/conf.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 04ab8b8..7d70c97 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -2447,7 +2447,7 @@ int lxc_assign_network(struct lxc_list *network, pid_t 
pid)
 int add_id_mapping(enum idtype idtype, pid_t pid, uid_t host_start, uid_t 
ns_start, int range)
 {
        char path[PATH_MAX];
-       int ret;
+       int ret, closeret;
        FILE *f;
 
        ret = snprintf(path, PATH_MAX, "/proc/%d/%cid_map", pid, idtype == 
ID_TYPE_UID ? 'u' : 'g');
@@ -2462,9 +2462,11 @@ int add_id_mapping(enum idtype idtype, pid_t pid, uid_t 
host_start, uid_t ns_sta
        }
        ret = fprintf(f, "%d %d %d", ns_start, host_start, range);
        if (ret < 0)
-               perror("write");
-       fclose(f);
-       return ret < 0 ? ret : 0;
+               SYSERROR("writing id mapping");
+       closeret = fclose(f);
+       if (closeret)
+               SYSERROR("writing id mapping");
+       return ret < 0 ? ret : closeret;
 }
 
 int lxc_map_ids(struct lxc_list *idmap, pid_t pid)
-- 
1.8.1.2


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to