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
