--- /dev/null
+From nobody Mon Sep 17 00:00:00 2001
+From: Oleg Nesterov <oleg@tv-sign.ru>
+Date: Thu Feb 9 22:41:50 2006 +0300
+Subject: [PATCH] do_sigaction: cleanup ->sa_mask manipulation
+
+Clear unblockable signals beforehand.
+
+Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ include/linux/sched.h | 2 +-
+ kernel/signal.c | 8 +++-----
+ 2 files changed, 4 insertions(+), 6 deletions(-)
+
+--- linux-2.6.15.4.orig/include/linux/sched.h
++++ linux-2.6.15.4/include/linux/sched.h
+@@ -1075,7 +1075,7 @@ extern struct sigqueue *sigqueue_alloc(v
+ extern void sigqueue_free(struct sigqueue *);
+ extern int send_sigqueue(int, struct sigqueue *, struct task_struct *);
+ extern int send_group_sigqueue(int, struct sigqueue *, struct task_struct *);
+-extern int do_sigaction(int, const struct k_sigaction *, struct k_sigaction *);
++extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *);
+ extern int do_sigaltstack(const stack_t __user *, stack_t __user *, unsigned long);
+
+ /* These can be the second arg to send_sig_info/send_group_sig_info. */
+--- linux-2.6.15.4.orig/kernel/signal.c
++++ linux-2.6.15.4/kernel/signal.c
+@@ -2335,7 +2335,7 @@ sys_rt_sigqueueinfo(int pid, int sig, si
+ }
+
+ int
+-do_sigaction(int sig, const struct k_sigaction *act, struct k_sigaction *oact)
++do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact)
+ {
+ struct k_sigaction *k;
+
+@@ -2358,6 +2358,8 @@ do_sigaction(int sig, const struct k_sig
+ *oact = *k;
+
+ if (act) {
++ sigdelsetmask(&act->sa.sa_mask,
++ sigmask(SIGKILL) | sigmask(SIGSTOP));
+ /*
+ * POSIX 3.3.1.3:
+ * "Setting a signal action to SIG_IGN for a signal that is
+@@ -2383,8 +2385,6 @@ do_sigaction(int sig, const struct k_sig
+ read_lock(&tasklist_lock);
+ spin_lock_irq(&t->sighand->siglock);
+ *k = *act;
+- sigdelsetmask(&k->sa.sa_mask,
+- sigmask(SIGKILL) | sigmask(SIGSTOP));
+ rm_from_queue(sigmask(sig), &t->signal->shared_pending);
+ do {
+ rm_from_queue(sigmask(sig), &t->pending);
+@@ -2397,8 +2397,6 @@ do_sigaction(int sig, const struct k_sig
+ }
+
+ *k = *act;
+- sigdelsetmask(&k->sa.sa_mask,
+- sigmask(SIGKILL) | sigmask(SIGSTOP));
+ }
+
+ spin_unlock_irq(¤t->sighand->siglock);
--- /dev/null
+From nobody Mon Sep 17 00:00:00 2001
+From: Dave Jones <davej@redhat.com>
+Date: Fri Feb 10 16:27:11 2006 -0500
+Subject: [PATCH] Fix s390 build failure.
+
+arch/s390/kernel/compat_signal.c:199: error: conflicting types for 'do_sigaction'
+include/linux/sched.h:1115: error: previous declaration of 'do_sigaction' was here
+
+Signed-off-by: Dave Jones <davej@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ arch/s390/kernel/compat_signal.c | 3 ---
+ 1 files changed, 3 deletions(-)
+
+--- linux-2.6.15.4.orig/arch/s390/kernel/compat_signal.c
++++ linux-2.6.15.4/arch/s390/kernel/compat_signal.c
+@@ -258,9 +258,6 @@ sys32_sigaction(int sig, const struct ol
+ return ret;
+ }
+
+-int
+-do_sigaction(int sig, const struct k_sigaction *act, struct k_sigaction *oact);
+-
+ asmlinkage long
+ sys32_rt_sigaction(int sig, const struct sigaction32 __user *act,
+ struct sigaction32 __user *oact, size_t sigsetsize)
revert-skb_copy_datagram_iovec-recursion-elimination.patch
address-autoconfiguration-does-not-work-after-device-down-up-cycle.patch
i386-x86-64-don-t-ipi-to-offline-cpus-on-shutdown.patch
+sys_signal-initialize-sa_mask.patch
+do_sigaction-cleanup-sa_mask-manipulation.patch
+sys32_signal-forgets-to-initialize-sa_mask.patch
+fix-s390-build-failure.patch
--- /dev/null
+From nobody Mon Sep 17 00:00:00 2001
+From: Tony Luck <tony.luck@intel.com>
+Date: Thu Feb 9 14:41:41 2006 -0800
+Subject: [PATCH] [IA64] sys32_signal() forgets to initialize ->sa_mask
+
+Pointed out by Oleg Nesterov <oleg@tv-sign.ru>, who in turn
+got the hint from Linus.
+
+Signed-off-by: Tony Luck <tony.luck@intel.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ arch/ia64/ia32/ia32_signal.c | 1 +
+ 1 files changed, 1 insertion(+)
+
+--- linux-2.6.15.4.orig/arch/ia64/ia32/ia32_signal.c
++++ linux-2.6.15.4/arch/ia64/ia32/ia32_signal.c
+@@ -515,6 +515,7 @@ sys32_signal (int sig, unsigned int hand
+
+ sigact_set_handler(&new_sa, handler, 0);
+ new_sa.sa.sa_flags = SA_ONESHOT | SA_NOMASK;
++ sigemptyset(&new_sa.sa.sa_mask);
+
+ ret = do_sigaction(sig, &new_sa, &old_sa);
+
--- /dev/null
+From nobody Mon Sep 17 00:00:00 2001
+From: Oleg Nesterov <oleg@tv-sign.ru>
+Date: Thu Feb 9 22:41:41 2006 +0300
+Subject: [PATCH] sys_signal: initialize ->sa_mask
+
+Pointed out by Linus Torvalds.
+
+sys_signal() forgets to initialize ->sa_mask.
+
+( I suspect arch/ia64/ia32/ia32_signal.c:sys32_signal()
+ also needs this fix )
+
+Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ kernel/signal.c | 1 +
+ 1 files changed, 1 insertion(+)
+
+--- linux-2.6.15.4.orig/kernel/signal.c
++++ linux-2.6.15.4/kernel/signal.c
+@@ -2604,6 +2604,7 @@ sys_signal(int sig, __sighandler_t handl
+
+ new_sa.sa.sa_handler = handler;
+ new_sa.sa.sa_flags = SA_ONESHOT | SA_NOMASK;
++ sigemptyset(&new_sa.sa.sa_mask);
+
+ ret = do_sigaction(sig, &new_sa, &old_sa);
+