case 2: s.sig[1] = s32.sig[2] | (((long)s32.sig[3]) << 32);
case 1: s.sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32);
}
- if (uts) {
- ret = get_user(t.tv_sec, &uts->tv_sec);
- ret |= __get_user(t.tv_nsec, &uts->tv_nsec);
- if (ret)
- return -EFAULT;
- }
+ if (uts && get_compat_timespec(&t, uts))
+ return -EFAULT;
set_fs(KERNEL_DS);
- if (uts)
- ret = sys_rt_sigtimedwait(&s, &info, &t, sigsetsize);
- else
- ret = sys_rt_sigtimedwait(&s, &info, (struct timespec *)uts,
- sigsetsize);
+ ret = sys_rt_sigtimedwait(&s, uinfo ? &info : NULL, uts ? &t : NULL,
+ sigsetsize);
set_fs(old_fs);
if (ret >= 0 && uinfo) {
if (copy_siginfo_to_user32(uinfo, &info))
set_fs (KERNEL_DS);
ret = sys_sched_rr_get_interval((int)pid, &t);
set_fs (old_fs);
- if (put_user (t.tv_sec, &interval->tv_sec) ||
- __put_user (t.tv_nsec, &interval->tv_nsec))
+ if (put_compat_timespec(&t, interval))
return -EFAULT;
-
return ret;
}