[CRIU] [PATCH 07/14] pid_ns: Pass namespace init task to do_create_pid_ns_helper()

Kirill Tkhai ktkhai at virtuozzo.com
Mon May 15 06:05:30 PDT 2017


This will be used in next patch.

Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
 criu/namespaces.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/criu/namespaces.c b/criu/namespaces.c
index b922d376f..398ff671f 100644
--- a/criu/namespaces.c
+++ b/criu/namespaces.c
@@ -2622,6 +2622,7 @@ static int pid_ns_helper(struct ns_id *ns, int sk)
 static int do_create_pid_ns_helper(void *arg, int sk, pid_t unused_pid)
 {
 	int pid_ns_fd, mnt_ns_fd, fd, i, lock_fd, transport_fd;
+	struct pstree_item *ns_reaper;
 	struct ns_id *ns, *tmp;
 	struct pid *pid;
 	pid_t child;
@@ -2631,7 +2632,8 @@ static int do_create_pid_ns_helper(void *arg, int sk, pid_t unused_pid)
 		pr_perror("Can't open pid ns");
 		goto err;
 	}
-	ns = *(struct ns_id **)arg;
+	ns_reaper = *(struct pstree_item **)arg;
+	ns = lookup_ns_by_id(ns_reaper->ids->pid_ns_id, &pid_ns_desc);
 
 	fd = fdstore_get(ns->pid.nsfd_id);
 	if (fd < 0) {
@@ -2747,7 +2749,7 @@ int create_pid_ns_helper(struct ns_id *ns)
 	if (sk < 0)
 		return -1;
 
-	if (userns_call(do_create_pid_ns_helper, 0, &ns, sizeof(ns), sk) < 0) {
+	if (userns_call(do_create_pid_ns_helper, 0, &current, sizeof(current), sk) < 0) {
 		pr_err("Can't create pid_ns helper\n");
 		close(sk);
 		return -1;



More information about the CRIU mailing list