Commit d0a6e9a1 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov

restore: Pass shmems_fd as argument as well

We might be needing to close the shmems file descriptor.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
parent 4416c649
...@@ -371,7 +371,7 @@ static int shmem_remap(pid_t pid, struct shmems *old_addr, ...@@ -371,7 +371,7 @@ static int shmem_remap(pid_t pid, struct shmems *old_addr,
if (new_addr->nr_shmems != old_addr->nr_shmems) if (new_addr->nr_shmems != old_addr->nr_shmems)
pr_err("shmem_remap failed\n"); pr_err("shmem_remap failed\n");
return 0; return fd;
} }
static int prepare_shared(int ps_fd) static int prepare_shared(int ps_fd)
...@@ -1616,7 +1616,7 @@ static void sigreturn_restore(pid_t pstree_pid, pid_t pid) ...@@ -1616,7 +1616,7 @@ static void sigreturn_restore(pid_t pstree_pid, pid_t pid)
restore_task_vma_len + restore_task_vma_len +
restore_thread_vma_len); restore_thread_vma_len);
ret = shmem_remap(shmems->pid, shmems, shmems_ref); ret = shmem_remap(shmems->pid, shmems, shmems_ref);
if (ret) if (ret < 0)
goto err; goto err;
/* /*
...@@ -1626,6 +1626,7 @@ static void sigreturn_restore(pid_t pstree_pid, pid_t pid) ...@@ -1626,6 +1626,7 @@ static void sigreturn_restore(pid_t pstree_pid, pid_t pid)
task_args->shmems = shmems_ref; task_args->shmems = shmems_ref;
task_args->fd_core = fd_core; task_args->fd_core = fd_core;
task_args->fd_self_vmas = fd_self_vmas; task_args->fd_self_vmas = fd_self_vmas;
task_args->shmems_fd = ret;
strncpy(task_args->self_vmas_path, strncpy(task_args->self_vmas_path,
self_vmas_path, self_vmas_path,
sizeof(task_args->self_vmas_path)); sizeof(task_args->self_vmas_path));
......
...@@ -78,6 +78,7 @@ struct task_restore_core_args { ...@@ -78,6 +78,7 @@ struct task_restore_core_args {
thread_restore_fcall_t clone_restore_fn; /* helper address for clone() call */ thread_restore_fcall_t clone_restore_fn; /* helper address for clone() call */
struct thread_restore_args *thread_args; /* array of thread arguments */ struct thread_restore_args *thread_args; /* array of thread arguments */
struct shmems *shmems; struct shmems *shmems;
int shmems_fd;
} __aligned(sizeof(long)); } __aligned(sizeof(long));
struct pt_regs { struct pt_regs {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment