[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] linux-user: don't short-circuit read with zero
From: |
Laurent Vivier |
Subject: |
Re: [Qemu-devel] [PATCH] linux-user: don't short-circuit read with zero length |
Date: |
Tue, 5 Mar 2019 18:31:16 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 |
Le 05/03/2019 à 17:45, Andreas Schwab a écrit :
> A zero-length read still needs to do the usual checks, thus it may return
> errors like EBADF. This makes the read syscall emulation consistent with
> the pread64 syscall emulation.
>
> Signed-off-by: Andreas Schwab <address@hidden>
> ---
> linux-user/syscall.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index ff912e89e1..7fac8e318f 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -7047,8 +7047,8 @@ static abi_long do_syscall1(void *cpu_env, int num,
> abi_long arg1,
> _exit(arg1);
> return 0; /* avoid warning */
> case TARGET_NR_read:
> - if (arg3 == 0) {
> - return 0;
> + if (arg2 == 0 && arg3 == 0) {
> + return get_errno(safe_read(arg1, 0, 0));
> } else {
> if (!(p = lock_user(VERIFY_WRITE, arg2, arg3, 0)))
> return -TARGET_EFAULT;
>
Reviewed-by: Laurent Vivier <address@hidden>