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: Samuel Thibault
Subject: Re: [Qemu-devel] [PATCH] linux-user: Fix sched_getaffinity mask size
Date: Sat, 27 Jan 2018 03:15:19 +0100
User-agent: NeoMutt/20170113 (1.7.2)

Laurent Vivier, on ven. 26 janv. 2018 21:34:38 +0100, wrote:
> 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;
>     }

That depends whether host_to_target_cpu_mask wants to return something
else than -TARGET_EFAULT, but at some point I don't care about
bikeshedding.

Samuel



reply via email to

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