Message ID | 20180211174704.27441-1-samuel.thibault@ens-lyon.org |
---|---|
State | New |
Headers | show |
Series | [PATCHv2] linux-user: Fix sched_getaffinity mask size | expand |
Le 11/02/2018 à 18:47, Samuel Thibault a écrit : > We properly computed the capped mask size to be put to the application > buffer, but didn't actually used it. Also, we need to return the capped mask > size instead of 0 on success. > > Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> > > --- > Difference from v1: > - simplify fix > --- > linux-user/syscall.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 82b35a6bdf..bcda3362fc 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -10493,7 +10493,9 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > ret = arg2; > } > > - ret = host_to_target_cpu_mask(mask, mask_size, arg3, arg2); > + if (host_to_target_cpu_mask(mask, mask_size, arg3, ret)) { > + goto efault; > + } > } > } > break; > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Le 11/02/2018 à 18:47, Samuel Thibault a écrit : > We properly computed the capped mask size to be put to the application > buffer, but didn't actually used it. Also, we need to return the capped mask > size instead of 0 on success. > > Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> > > --- > Difference from v1: > - simplify fix > --- > linux-user/syscall.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 82b35a6bdf..bcda3362fc 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -10493,7 +10493,9 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > ret = arg2; > } > > - ret = host_to_target_cpu_mask(mask, mask_size, arg3, arg2); > + if (host_to_target_cpu_mask(mask, mask_size, arg3, ret)) { > + goto efault; > + } > } > } > break; > Applied to my 'linux-user-for-2.12' branch. Thanks, Laurent
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 82b35a6bdf..bcda3362fc 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -10493,7 +10493,9 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, ret = arg2; } - ret = host_to_target_cpu_mask(mask, mask_size, arg3, arg2); + if (host_to_target_cpu_mask(mask, mask_size, arg3, ret)) { + goto efault; + } } } break;
We properly computed the capped mask size to be put to the application buffer, but didn't actually used it. Also, we need to return the capped mask size instead of 0 on success. Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> --- Difference from v1: - simplify fix --- linux-user/syscall.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)