tracehook: fix SA_NOCLDWAIT

I outwitted myself again in commit 2b2a1ff64afbadac842bbc58c5166962cf4f7664,
and broke the SA_NOCLDWAIT behavior so it leaks zombies. This fixes it.

Reported-by: Andi Kleen <andi@firstfloor.org>
Signed-off-by: Roland McGrath <roland@redhat.com>

+3 -2
+3 -2
kernel/signal.c
··· 1338 1338 struct siginfo info; 1339 1339 unsigned long flags; 1340 1340 struct sighand_struct *psig; 1341 + int ret = sig; 1341 1342 1342 1343 BUG_ON(sig == -1); 1343 1344 ··· 1403 1402 * is implementation-defined: we do (if you don't want 1404 1403 * it, just use SIG_IGN instead). 1405 1404 */ 1406 - tsk->exit_signal = -1; 1405 + ret = tsk->exit_signal = -1; 1407 1406 if (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN) 1408 1407 sig = -1; 1409 1408 } ··· 1412 1411 __wake_up_parent(tsk, tsk->parent); 1413 1412 spin_unlock_irqrestore(&psig->siglock, flags); 1414 1413 1415 - return sig; 1414 + return ret; 1416 1415 } 1417 1416 1418 1417 static void do_notify_parent_cldstop(struct task_struct *tsk, int why)