qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] linux-user: pass correct host flags to accept4(


From: Petar Jovanovic
Subject: Re: [Qemu-devel] [PATCH] linux-user: pass correct host flags to accept4()
Date: Mon, 31 Mar 2014 15:36:29 +0000

________________________________________
From: Peter Maydell address@hidden
Sent: Monday, March 31, 2014 5:19 PM
To: Petar Jovanovic
Cc: QEMU Developers; Riku Voipio; Petar Jovanovic
Subject: Re: [Qemu-devel] [PATCH] linux-user: pass correct host flags to 
accept4()

On 31 March 2014 16:09, Petar Jovanovic <address@hidden> wrote:
> From: Petar Jovanovic <address@hidden>
>
> Flags NONBLOCK and CLOEXEC can have different values on the host and the
> guest, so set correct host values before calling accept4().
>
> This fixes several issues with accept4 system call and user-mode of QEMU.
>
> Signed-off-by: Petar Jovanovic <address@hidden>
> ---
>  linux-user/syscall.c |   13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 2eac6d5..3447419 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -2062,9 +2062,18 @@ static abi_long do_accept4(int fd, abi_ulong 
> target_addr,
>      socklen_t addrlen;
>      void *addr;
>      abi_long ret;
> +    int host_flags;
> +
> +    host_flags = flags & (~(TARGET_O_NONBLOCK | TARGET_O_CLOEXEC));
> +    if (flags & TARGET_O_NONBLOCK) {
> +        host_flags |= O_NONBLOCK;
> +    }
> +    if (flags & TARGET_O_CLOEXEC) {
> +        host_flags |= O_CLOEXEC;
> +    }

> We have a target_to_host_bitmask() utility for this
> kind of thing. I think you can just use
>   host_flags = target_to_host_bitmask(flags, fcntl_flags_tbl);
> 
> and rely on the host kernel to fail EINVAL if the
> guest has set any of the other flags that fnctl_flags_tbl
> supports.

I can, though target_to_host_bitmask() does more work/iterration than what
I believe is really needed in this case.

I will send a modified patch nevertheless.

Regards,
Petar


reply via email to

[Prev in Thread] Current Thread [Next in Thread]