On 28 May 2015 at 23:16, Arnd Bergmann <[email protected]> wrote:

> On Tuesday 26 May 2015 18:08:29 Baolin Wang wrote:
> > +SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
> > +               const struct itimerspec __user *, new_setting,
> > +               struct itimerspec __user *, old_setting)
> > +{
> > +       struct itimerspec new_spec, old_spec;
> > +       int error = 0;
> > +       struct itimerspec *rtn = old_setting ? &old_spec : NULL;
> > +
> > +       if (!new_setting)
> > +               return -EINVAL;
> > +
> > +       if (copy_from_user(&new_spec, new_setting, sizeof (new_spec)))
> > +               return -EFAULT;
> > +
> > +       if (!timespec_valid(&new_spec.it_interval) ||
> > +           !timespec_valid(&new_spec.it_value))
> > +               return -EINVAL;
> > +
> > +       error = __timer_settime(timer_id, flags, &new_spec, rtn);
> > +
> >         if (old_setting && !error &&
> >             copy_to_user(old_setting, &old_spec, sizeof (old_spec)))
> >                 error = -EFAULT;
> >
>
> Since this is meant as preparation for adding the compat syscalls,
> I think the actual syscall code here should be as small as possible.
>
> In order to do that, it would be better to have the timespec_valid
> calls inside of __timer_settime.
>
>         Arnd
>

Ok.

-- 
Baolin.wang
Best Regards
_______________________________________________
Y2038 mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/y2038

Reply via email to