qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] linux-user: Fix sched_getaffinity mask size


From: Laurent Vivier
Subject: Re: [Qemu-devel] [PATCH] linux-user: Fix sched_getaffinity mask size
Date: Fri, 26 Jan 2018 21:34:38 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2

Le 26/01/2018 à 19:36, Samuel Thibault a écrit :
> We properly computed the capped mask size to be put to the application
> buffer, but didn't actually it. Also, we need to return the capped mask
> size instead of 0 on success.
> 
> Signed-off-by: Samuel Thibault <address@hidden>
> ---
>  linux-user/syscall.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 74378947f0..cf2369aac2 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -10496,10 +10496,15 @@ abi_long do_syscall(void *cpu_env, int num, 
> abi_long arg1,
>                          ret = -TARGET_EINVAL;
>                          break;
>                      }
> -                    ret = arg2;
> +                } else if (arg2 > ret) {
> +                    arg2 = ret;
>                  }
>  
>                  ret = host_to_target_cpu_mask(mask, mask_size, arg3, arg2);
> +
> +                if (ret == 0) {
> +                    ret = arg2;
> +                }
>              }
>          }
>          break;
> 

Modified code was:

    if (copy_to_user(arg3, mask, ret)) {
        goto efault;
    }

so the change should only be:

    if (host_to_target_cpu_mask(mask, mask_size, arg3, ret)) {
        goto efault;
    }

Thanks,
Laurent





reply via email to

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