diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-10-05 01:18:40 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-10-05 01:18:40 +0000 |
commit | 012bb3e61e5eced6c610f9e036372bf0c8def2d1 (patch) | |
tree | 87efc733f9b164e8c85c0336f92c8fb7eff6d183 /arch/mips/kernel/irixsig.c | |
parent | 625a1589d3d6464b5d90b8a0918789e3afffd220 (diff) |
Merge with Linux 2.4.0-test9. Please check DECstation, I had a number
of rejects to fixup while integrating Linus patches. I also found
that this kernel will only boot SMP on Origin; the UP kernel freeze
soon after bootup with SCSI timeout messages. I commit this anyway
since I found that the last CVS versions had the same problem.
Diffstat (limited to 'arch/mips/kernel/irixsig.c')
-rw-r--r-- | arch/mips/kernel/irixsig.c | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/arch/mips/kernel/irixsig.c b/arch/mips/kernel/irixsig.c index 7254ee95d..6f6556da4 100644 --- a/arch/mips/kernel/irixsig.c +++ b/arch/mips/kernel/irixsig.c @@ -264,7 +264,7 @@ asmlinkage int do_irix_signal(sigset_t *oldset, struct pt_regs *regs) /* FALLTHRU */ default: - sigaddset(¤t->signal, signr); + sigaddset(¤t->pending.signal, signr); recalc_sigpending(current); current->flags |= PF_SIGNALED; do_exit(exit_code); @@ -429,24 +429,7 @@ irix_sigaction(int sig, const struct sigaction *act, asmlinkage int irix_sigpending(irix_sigset_t *set) { - int err; - - if (verify_area(VERIFY_WRITE, set, sizeof(*set)) < 0) - return -EFAULT; - - /* fill in "set" with signals pending but blocked. */ - spin_lock_irq(¤t->sigmask_lock); - err = __put_user(current->blocked.sig[0] & current->signal.sig[0], - &set->sig[0]); - err |= __put_user(current->blocked.sig[1] & current->signal.sig[1], - &set->sig[1]); - err |= __put_user(current->blocked.sig[2] & current->signal.sig[2], - &set->sig[2]); - err |= __put_user(current->blocked.sig[3] & current->signal.sig[3], - &set->sig[3]); - spin_unlock_irq(¤t->sigmask_lock); - - return err; + return do_sigpending(set, sizeof(*set)); } asmlinkage int irix_sigprocmask(int how, irix_sigset_t *new, irix_sigset_t *old) @@ -605,7 +588,7 @@ asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info, expire = schedule_timeout(expire); for (i=0; i<=4; i++) - tmp |= (current->signal.sig[i] & kset.sig[i]); + tmp |= (current->pending.signal.sig[i] & kset.sig[i]); if (tmp) break; @@ -622,7 +605,7 @@ asmlinkage int irix_sigpoll_sys(unsigned long *set, struct irix5_siginfo *info, for(sig = 1; i <= 65 /* IRIX_NSIG */; sig++) { if (sigismember (&kset, sig)) continue; - if (sigismember (¤t->signal, sig)) { + if (sigismember (¤t->pending.signal, sig)) { /* XXX need more than this... */ if (info) info->sig = sig; |