[CRIU] [PATCH 2/2] restore: unlock network before disabling repair mode on sockets (v2)

Andrey Vagin avagin at openvz.org
Mon Jul 15 10:14:12 EDT 2013


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 <avagin at openvz.org>
---
 cr-restore.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/cr-restore.c b/cr-restore.c
index 14b496c..2ca444b 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;
-- 
1.8.3.1



More information about the CRIU mailing list