]>
Commit | Line | Data |
---|---|---|
e6d11017 JR |
1 | Fix bad signaling between threads when ancestor dies. |
2 | Author: Zeuner, Axel <Axel.Zeuner@partner.commerzbank.com> | |
3 | ||
4 | --- linux/kernel/exit.c.original Mon Aug 5 09:09:31 2002 | |
5 | +++ linux/kernel/exit.c Mon Aug 5 12:26:38 2002 | |
6 | @@ -212,7 +212,6 @@ | |
7 | if (p->p_opptr == father) { | |
8 | /* We dont want people slaying init */ | |
9 | p->exit_signal = SIGCHLD; | |
10 | - p->self_exec_id++; | |
11 | ||
12 | /* Make sure we're not reparenting to ourselves */ | |
13 | p->p_opptr = child_reaper; | |
14 | --- linux/kernel/signal.c.original Mon Aug 5 12:26:49 2002 | |
15 | +++ linux/kernel/signal.c Mon Aug 5 12:34:44 2002 | |
16 | @@ -16,6 +16,8 @@ | |
17 | ||
18 | #include <asm/uaccess.h> | |
19 | ||
20 | +extern struct task_struct* child_reaper; | |
21 | + | |
22 | /* | |
23 | * SLAB caches for signal bits. | |
24 | */ | |
25 | @@ -744,6 +746,9 @@ | |
26 | struct siginfo info; | |
27 | int why, status; | |
28 | ||
29 | + if (tsk->p_pptr==child_reaper) { | |
30 | + sig=SIGCHLD; | |
31 | + } | |
32 | info.si_signo = sig; | |
33 | info.si_errno = 0; | |
34 | info.si_pid = tsk->pid; |