From 81e11b44dec4d121fb2a08bac0563f4717bc315b Mon Sep 17 00:00:00 2001 From: Andrey Vagin Date: Mon, 15 Jul 2013 18:14:12 +0400 Subject: [PATCH] restore: unlock network before disabling repair mode on sockets (v2) Window probe is sent during disabling repair mode on a socket, so network must be unlocked in this moment. https://bugzilla.openvz.org/show_bug.cgi?id=2670 v2: don't fail after unlocking network Signed-off-by: Andrey Vagin Signed-off-by: Pavel Emelyanov --- cr-restore.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/cr-restore.c b/cr-restore.c index 14b496c72..2ca444bb1 100644 --- a/cr-restore.c +++ b/cr-restore.c @@ -1304,12 +1304,10 @@ static int restore_root_task(struct pstree_item *init) goto out; pr_info("Wait until all tasks are restored\n"); - ret = restore_switch_stage(CR_STATE_RESTORE_CREDS); + ret = restore_wait_inprogress_tasks(); if (ret < 0) goto out; - futex_wait_until(&task_entries->nr_in_progress, 0); - /* Restore SIGCHLD here to skip SIGCHLD from a network sctip */ ret = sigaction(SIGCHLD, &old_act, NULL); if (ret < 0) { @@ -1317,7 +1315,18 @@ static int restore_root_task(struct pstree_item *init) goto out; } + /* Unlock network before disabling repair mode on sockets */ network_unlock(); + + /* + * ------------------------------------------------------------- + * Below this line nothing can fail, because network is unlocked + */ + + __restore_switch_stage(CR_STATE_RESTORE_CREDS); + + futex_wait_until(&task_entries->nr_in_progress, 0); + out: if (ret < 0) { struct pstree_item *pi;