mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-18 00:58:31 +00:00
rst: Initialize task restore args after rst-mem remap
The plan is to move the args on rst-mem itself. Thus we need to make sure it's initialized _after_ remap into restorer space. Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
3e895cc2da
commit
a2917ffc87
1 changed files with 13 additions and 10 deletions
23
cr-restore.c
23
cr-restore.c
|
|
@ -2306,14 +2306,12 @@ static int sigreturn_restore(pid_t pid, CoreEntry *core)
|
|||
goto err;
|
||||
}
|
||||
|
||||
exec_mem_hint -= restorer_len;
|
||||
|
||||
memzero(mem, args_len);
|
||||
task_args = mem;
|
||||
thread_args = (struct thread_restore_args *)(task_args + 1);
|
||||
|
||||
task_args->bootstrap_start = (void *)exec_mem_hint - restorer_len;
|
||||
task_args->bootstrap_len = restore_bootstrap_len;
|
||||
task_args->vdso_rt_size = vdso_rt_size;
|
||||
|
||||
/*
|
||||
* Get a reference to shared memory area which is
|
||||
* used to signal if shmem restoration complete
|
||||
|
|
@ -2329,17 +2327,22 @@ static int sigreturn_restore(pid_t pid, CoreEntry *core)
|
|||
ret = shmem_remap(task_entries, mem, TASK_ENTRIES_SIZE);
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
task_args->task_entries = mem;
|
||||
|
||||
mem += TASK_ENTRIES_SIZE;
|
||||
|
||||
task_args->premmapped_addr = (unsigned long) current->rst->premmapped_addr;
|
||||
task_args->premmapped_len = current->rst->premmapped_len;
|
||||
if (rst_mem_remap(mem))
|
||||
goto err;
|
||||
|
||||
task_args->task_entries = mem - TASK_ENTRIES_SIZE;
|
||||
|
||||
task_args->rst_mem = mem;
|
||||
task_args->rst_mem_size = rst_mem_remap_size();
|
||||
if (rst_mem_remap(mem))
|
||||
goto err;
|
||||
|
||||
task_args->bootstrap_start = (void *)exec_mem_hint;
|
||||
task_args->bootstrap_len = restore_bootstrap_len;
|
||||
task_args->vdso_rt_size = vdso_rt_size;
|
||||
|
||||
task_args->premmapped_addr = (unsigned long) current->rst->premmapped_addr;
|
||||
task_args->premmapped_len = current->rst->premmapped_len;
|
||||
|
||||
task_args->shmems = rst_mem_remap_ptr(rst_shmems, RM_SHREMAP);
|
||||
task_args->nr_shmems = nr_shmems;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue