]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
start: don't let data_sock users close the fd
authorChristian Brauner <christian.brauner@ubuntu.com>
Mon, 4 Sep 2017 12:48:37 +0000 (14:48 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Mon, 4 Sep 2017 16:38:01 +0000 (18:38 +0200)
It is bad style to close an fd inside a function which didn't create it. Let's
rather close it transparently in start.c.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/conf.c
src/lxc/network.c
src/lxc/start.c

index 041cc36054903342742358eeaae485fb7e39cc4e..15142f066ffe5ae0737190df662d63979cbedfee 100644 (file)
@@ -3035,8 +3035,6 @@ static int lxc_send_ttys_to_parent(struct lxc_handler *handler)
        else
                TRACE("Sent %d ttys to parent", conf->tty);
 
-       close(handler->data_sock[0]);
-       close(handler->data_sock[1]);
        lxc_delete_tty(tty_info);
 
        return ret;
index 6f87d07a37d8f0145daa60e5d3de2c79ce1f638d..c20d5980f70c398980b3b4721984f8466200b993 100644 (file)
@@ -2975,14 +2975,9 @@ int lxc_network_send_veth_names_to_child(struct lxc_handler *handler)
                        continue;
 
                ret = send(data_sock, netdev->name, IFNAMSIZ, 0);
-               if (ret < 0) {
-                       close(handler->data_sock[0]);
-                       close(handler->data_sock[1]);
+               if (ret < 0)
                        return -1;
-               } else {
-                       TRACE("Sent network device name \"%s\" to child",
-                             netdev->name);
-               }
+               TRACE("Sent network device name \"%s\" to child", netdev->name);
        }
 
        return 0;
@@ -3005,14 +3000,9 @@ int lxc_network_recv_veth_names_from_parent(struct lxc_handler *handler)
                        continue;
 
                ret = recv(data_sock, netdev->name, IFNAMSIZ, 0);
-               if (ret < 0) {
-                       close(handler->data_sock[0]);
-                       close(handler->data_sock[1]);
+               if (ret < 0)
                        return -1;
-               } else {
-                       TRACE("Received network device name \"%s\" from parent",
-                             netdev->name);
-               }
+               TRACE("Received network device name \"%s\" from parent", netdev->name);
        }
 
        return 0;
@@ -3034,23 +3024,18 @@ int lxc_network_send_name_and_ifindex_to_parent(struct lxc_handler *handler)
                /* Send network device name in the child's namespace to parent. */
                ret = send(data_sock, netdev->name, IFNAMSIZ, 0);
                if (ret < 0)
-                       goto on_error;
+                       return -1;
 
                /* Send network device ifindex in the child's namespace to
                 * parent.
                 */
                ret = send(data_sock, &netdev->ifindex, sizeof(netdev->ifindex), 0);
                if (ret < 0)
-                       goto on_error;
+                       return -1;
        }
 
        TRACE("Sent network device names and ifindeces to parent");
        return 0;
-
-on_error:
-       close(handler->data_sock[0]);
-       close(handler->data_sock[1]);
-       return -1;
 }
 
 int lxc_network_recv_name_and_ifindex_from_child(struct lxc_handler *handler)
@@ -3071,20 +3056,15 @@ int lxc_network_recv_name_and_ifindex_from_child(struct lxc_handler *handler)
                 */
                ret = recv(data_sock, netdev->name, IFNAMSIZ, 0);
                if (ret < 0)
-                       goto on_error;
+                       return -1;
 
                /* Receive network device ifindex in the child's namespace to
                 * parent.
                 */
                ret = recv(data_sock, &netdev->ifindex, sizeof(netdev->ifindex), 0);
                if (ret < 0)
-                       goto on_error;
+                       return -1;
        }
 
        return 0;
-
-on_error:
-       close(handler->data_sock[0]);
-       close(handler->data_sock[1]);
-       return -1;
 }
index 5bb3db4313d8da314de5d7212cb146f7ed3d67a6..bfd5827e1fa85ea64c1e40117638b61af475031a 100644 (file)
@@ -988,7 +988,10 @@ static int do_start(void *data)
        }
 
        /* Setup the container, ip, names, utsname, ... */
-       if (lxc_setup(handler)) {
+       ret = lxc_setup(handler);
+       close(handler->data_sock[0]);
+       close(handler->data_sock[1]);
+       if (ret < 0) {
                ERROR("Failed to setup container \"%s\".", handler->name);
                goto out_warn_father;
        }