summaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
commit59223edaa18759982db0a8aced0e77457d10c68e (patch)
tree89354903b01fa0a447bffeefe00df3044495db2e /kernel/signal.c
parentdb7d4daea91e105e3859cf461d7e53b9b77454b2 (diff)
Merge with Linux 2.3.6. Sorry, this isn't tested on silicon, I don't
have a MIPS box at hand.
Diffstat (limited to 'kernel/signal.c')
-rw-r--r--kernel/signal.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index 56cb317d9..9a1cd2ab4 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -11,6 +11,7 @@
#include <linux/unistd.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
+#include <linux/sched.h>
#include <asm/uaccess.h>
@@ -324,7 +325,7 @@ printk("SIG queue (%s:%d): %d ", t->comm, t->pid, sig);
if (nr_queued_signals < max_queued_signals) {
q = (struct signal_queue *)
- kmem_cache_alloc(signal_queue_cachep, GFP_KERNEL);
+ kmem_cache_alloc(signal_queue_cachep, GFP_ATOMIC);
}
if (q) {
@@ -387,7 +388,7 @@ printk("SIG queue (%s:%d): %d ", t->comm, t->pid, sig);
out:
spin_unlock_irqrestore(&t->sigmask_lock, flags);
- if (t->state == TASK_INTERRUPTIBLE && signal_pending(t))
+ if ((t->state & TASK_INTERRUPTIBLE) && signal_pending(t))
wake_up_process(t);
out_nolock:
@@ -417,6 +418,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
if (t->sig->action[sig-1].sa.sa_handler == SIG_IGN)
t->sig->action[sig-1].sa.sa_handler = SIG_DFL;
sigdelset(&t->blocked, sig);
+ recalc_sigpending(t);
spin_unlock_irqrestore(&t->sigmask_lock, flags);
return send_sig_info(sig, info, t);
@@ -1039,7 +1041,7 @@ out:
#endif /* __sparc__ */
#endif
-#if !defined(__alpha__)
+#if !defined(__alpha__) && !defined(__ia64__)
/*
* For backwards compatibility. Functionality superseded by sigprocmask.
*/
@@ -1065,9 +1067,9 @@ sys_ssetmask(int newmask)
return old;
}
-#endif /* !defined(__alpha__) */
+#endif /* !defined(__alpha__) && !defined(__ia64__) */
-#if !defined(__alpha__) && !defined(__mips__)
+#if !defined(__alpha__) && !defined(__mips__) && !defined(__ia64__)
/*
* For backwards compatibility. Functionality superseded by sigaction.
*/
@@ -1084,4 +1086,4 @@ sys_signal(int sig, __sighandler_t handler)
return ret ? ret : (unsigned long)old_sa.sa.sa_handler;
}
-#endif /* !defined(__alpha__) && !defined(__mips__) */
+#endif /* !defined(__alpha__) && !defined(__mips__) && !defined(__ia64__) */