[CRIU] [PATCH 1/2] scripts: Do not set -1 as root item pid

Pavel Emelyanov xemul at virtuozzo.com
Thu Apr 28 07:46:26 PDT 2016


On restore root_item may exist, but its real pid is not yet resolved
Fixes e5e8f791.

Signed-off-by: Pavel Emelyanov <xemul at virtuozzo.com>
---
 criu/action-scripts.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/criu/action-scripts.c b/criu/action-scripts.c
index aa64703..ee59210 100644
--- a/criu/action-scripts.c
+++ b/criu/action-scripts.c
@@ -44,7 +44,6 @@ static int run_shell_scripts(const char *action)
 	int ret = 0;
 	struct script *script;
 	char image_dir[PATH_MAX];
-	char root_item_pid[16];
 	static unsigned env_set = 0;
 
 #define ENV_IMGDIR	0x1
@@ -65,12 +64,18 @@ static int run_shell_scripts(const char *action)
 	}
 
 	if (!(env_set & ENV_ROOTPID) && root_item) {
-		snprintf(root_item_pid, sizeof(root_item_pid), "%d", root_item->pid.real);
-		if (setenv("CRTOOLS_INIT_PID", root_item_pid, 1)) {
-			pr_perror("Can't set CRTOOLS_INIT_PID=%s", root_item_pid);
-			return -1;
+		int pid;
+		char root_item_pid[16];
+
+		pid = root_item->pid.real;
+		if (pid != -1) {
+			snprintf(root_item_pid, sizeof(root_item_pid), "%d", pid);
+			if (setenv("CRTOOLS_INIT_PID", root_item_pid, 1)) {
+				pr_perror("Can't set CRTOOLS_INIT_PID=%s", root_item_pid);
+				return -1;
+			}
+			env_set |= ENV_ROOTPID;
 		}
-		env_set |= ENV_ROOTPID;
 	}
 
 	list_for_each_entry(script, &scripts, node) {
-- 
2.5.0


More information about the CRIU mailing list