fix some vDSO bugs.
- vDSO sometimes becomes invalid. - vDSO is not succeeded for child process. - vDSO becomes invalid when execve. refs #744
This commit is contained in:
@@ -332,6 +332,9 @@ int prepare_process_ranges_args_envs(struct thread *thread,
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
else {
|
||||
vm->vdso_addr = NULL;
|
||||
}
|
||||
|
||||
p->rprocess = (unsigned long)thread;
|
||||
p->rpgtable = virt_to_phys(as->page_table);
|
||||
|
||||
@@ -387,6 +387,8 @@ clone_thread(struct thread *org, unsigned long pc, unsigned long sp,
|
||||
goto err_free_proc;
|
||||
}
|
||||
|
||||
thread->vm->vdso_addr = org->vm->vdso_addr;
|
||||
thread->vm->vvar_addr = org->vm->vvar_addr;
|
||||
thread->proc->maxrss = org->proc->maxrss;
|
||||
thread->vm->currss = org->vm->currss;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user