diff --git a/criu/cr-restore.c b/criu/cr-restore.c index c58169f4e..26c2c1136 100644 --- a/criu/cr-restore.c +++ b/criu/cr-restore.c @@ -873,6 +873,9 @@ static int restore_one_alive_task(int pid, CoreEntry *core) if (restore_task_net_ns(current)) return -1; + if (current->ids && set_user_ns(current->ids->user_ns_id) < 0) + return -1; + if (setup_uffd(pid, ta)) return -1; @@ -1180,6 +1183,11 @@ static inline int fork_with_pid(struct pstree_item *item) int ret = -1; pid_t pid = vpid(item); + if (item != root_item) + item->user_ns = current->user_ns; + else + item->user_ns = root_user_ns; + if (item->pid->state != TASK_HELPER) { if (open_core(pid, &ca.core)) return -1;