From 8945dad0ddfb824d90ba360d01c9c5763e522de4 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Fri, 21 May 2021 11:18:21 +0200 Subject: [PATCH] start: reorder START_SYNC_POST_CONFIGURE Signed-off-by: Christian Brauner --- src/lxc/start.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/lxc/start.c b/src/lxc/start.c index f732eb52f..2080e3cf6 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -1800,32 +1800,32 @@ static int lxc_spawn(struct lxc_handler *handler) ERROR("Failed to create the network"); goto out_delete_net; } - - ret = lxc_network_send_to_child(handler); - if (ret < 0) { - ERROR("Failed to send veth names to child"); - goto out_delete_net; - } } + /* Tell the child to continue its initialization. */ + if (!lxc_sync_wake_child(handler, START_SYNC_POST_CONFIGURE)) + goto out_delete_net; + ret = lxc_rootfs_prepare_parent(handler); if (ret) { ERROR("Failed to prepare rootfs"); goto out_delete_net; } + if (handler->ns_clone_flags & CLONE_NEWNET) { + ret = lxc_network_send_to_child(handler); + if (ret < 0) { + ERROR("Failed to send veth names to child"); + goto out_delete_net; + } + } + if (!lxc_list_empty(&conf->procs)) { ret = setup_proc_filesystem(&conf->procs, handler->pid); if (ret < 0) goto out_delete_net; } - /* Tell the child to continue its initialization. We'll get - * START_SYNC_CGROUP when it is ready for us to setup cgroups. - */ - if (!lxc_sync_barrier_child(handler, START_SYNC_POST_CONFIGURE)) - goto out_delete_net; - if (!lxc_list_empty(&conf->limits)) { ret = setup_resource_limits(&conf->limits, handler->pid); if (ret < 0) { @@ -1834,6 +1834,13 @@ static int lxc_spawn(struct lxc_handler *handler) } } + /* + * Wait for the child to tell us that it's ready for us to prepare + * cgroups. + */ + if (!lxc_sync_wait_child(handler, START_SYNC_CGROUP)) + goto out_delete_net; + if (!lxc_sync_barrier_child(handler, START_SYNC_CGROUP_UNSHARE)) goto out_delete_net; -- 2.39.5