901
908
if (copy_from_user(&s32, uthese, sizeof(compat_sigset_t)))
903
910
sigset_from_compat(&s, &s32);
904
sigdelsetmask(&s,sigmask(SIGKILL)|sigmask(SIGSTOP));
908
if (get_compat_timespec (&t, uts))
913
if (get_compat_timespec(&t, uts))
910
if (t.tv_nsec >= 1000000000L || t.tv_nsec < 0
915
spin_lock_irq(¤t->sighand->siglock);
916
sig = dequeue_signal(current, &s, &info);
918
timeout = MAX_SCHEDULE_TIMEOUT;
920
timeout = timespec_to_jiffies(&t)
921
+(t.tv_sec || t.tv_nsec);
923
current->real_blocked = current->blocked;
924
sigandsets(¤t->blocked, ¤t->blocked, &s);
927
spin_unlock_irq(¤t->sighand->siglock);
929
timeout = schedule_timeout_interruptible(timeout);
931
spin_lock_irq(¤t->sighand->siglock);
932
sig = dequeue_signal(current, &s, &info);
933
current->blocked = current->real_blocked;
934
siginitset(¤t->real_blocked, 0);
938
spin_unlock_irq(¤t->sighand->siglock);
943
if (copy_siginfo_to_user32(uinfo, &info))
947
ret = timeout?-EINTR:-EAGAIN;
917
ret = do_sigtimedwait(&s, &info, uts ? &t : NULL);
919
if (ret > 0 && uinfo) {
920
if (copy_siginfo_to_user32(uinfo, &info))