--- /dev/null
+http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0028
+
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -1202,7 +1202,9 @@ static struct task_struct *copy_process(
+ p->parent_exec_id = p->self_exec_id;
+
+ /* ok, now we should be set up.. */
+- p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL);
++ p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 :
++ (clone_flags & CLONE_PARENT) ? current->group_leader->exit_signal :
++ (clone_flags & CSIGNAL);
+ p->pdeath_signal = 0;
+ p->exit_state = 0;
+
--- /dev/null
+http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0028
+
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -1246,7 +1246,9 @@ static struct task_struct *copy_process(
+ p->parent_exec_id = p->self_exec_id;
+
+ /* ok, now we should be set up.. */
+- p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL);
++ p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 :
++ (clone_flags & CLONE_PARENT) ? current->group_leader->exit_signal :
++ (clone_flags & CSIGNAL);
+ p->pdeath_signal = 0;
+ p->exit_state = 0;
+
--- /dev/null
+http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0028
+
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -1114,7 +1114,9 @@ static struct task_struct *copy_process(
+ p->parent_exec_id = p->self_exec_id;
+
+ /* ok, now we should be set up.. */
+- p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL);
++ p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 :
++ (clone_flags & CLONE_PARENT) ? current->group_leader->exit_signal :
++ (clone_flags & CSIGNAL);
+ p->pdeath_signal = 0;
+ p->exit_state = 0;
+