[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/4] linux-user: Disallow setting newsp for fork
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH 1/4] linux-user: Disallow setting newsp for fork |
Date: |
Tue, 31 Jul 2018 11:54:44 +0100 |
User-agent: |
mu4e 1.1.0; emacs 26.1.50 |
Richard Henderson <address@hidden> writes:
> Or really, just clone devolving into fork. This should not ever happen
> in practice. We do want to reserve calling cpu_clone_regs for the case
> in which we are actually performing a clone.
>
> Signed-off-by: Richard Henderson <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
> ---
> linux-user/syscall.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index dfc851cc35..5bf8d13de7 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -6502,10 +6502,14 @@ static int do_fork(CPUArchState *env, unsigned int
> flags, abi_ulong newsp,
> pthread_mutex_destroy(&info.mutex);
> pthread_mutex_unlock(&clone_lock);
> } else {
> - /* if no CLONE_VM, we consider it is a fork */
> + /* If no CLONE_VM, we consider it is a fork. */
> if (flags & CLONE_INVALID_FORK_FLAGS) {
> return -TARGET_EINVAL;
> }
> + /* As a fork, setting a new sp does not make sense. */
> + if (newsp) {
> + return -TARGET_EINVAL;
> + }
>
> /* We can't support custom termination signals */
> if ((flags & CSIGNAL) != TARGET_SIGCHLD) {
> @@ -6520,7 +6524,6 @@ static int do_fork(CPUArchState *env, unsigned int
> flags, abi_ulong newsp,
> ret = fork();
> if (ret == 0) {
> /* Child Process. */
> - cpu_clone_regs(env, newsp);
> fork_end(1);
> /* There is a race condition here. The parent process could
> theoretically read the TID in the child process before the
> child
--
Alex Bennée
- [Qemu-devel] [PATCH 0/3] linux-user/sparc: Fixes for clone, Richard Henderson, 2018/07/30
- [Qemu-devel] [PATCH 1/4] linux-user: Disallow setting newsp for fork, Richard Henderson, 2018/07/30
- Re: [Qemu-devel] [PATCH 1/4] linux-user: Disallow setting newsp for fork,
Alex Bennée <=
- [Qemu-devel] [PATCH 3/4] linux-user/sparc: Fix cpu_clone_regs, Richard Henderson, 2018/07/30
- [Qemu-devel] [PATCH 2/4] linux-user: Pass the parent env to cpu_clone_regs, Richard Henderson, 2018/07/30
- [Qemu-devel] [PATCH 4/4] linux-user/sparc: Flush register windows before clone, Richard Henderson, 2018/07/30
- Re: [Qemu-devel] [PATCH 0/3] linux-user/sparc: Fixes for clone, Alex Bennée, 2018/07/31