[PATCH] Call exit_itimers from do_exit, not __exit_signal
authorRoland McGrath <roland@redhat.com>
Fri, 21 Oct 2005 22:03:29 +0000 (15:03 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 21 Oct 2005 22:38:08 +0000 (15:38 -0700)
commit25f407f0b668f5e4ebd5d13e1fb4306ba6427ead
tree10d8661419da9e0d6be6d22ef319582d052c4a26
parent9465bee863bc4c6cf1566c12d6f92a8133e3da5c
[PATCH] Call exit_itimers from do_exit, not __exit_signal

When I originally moved exit_itimers into __exit_signal, that was the only
place where we could reliably know it was the last thread in the group
dying, without races.  Since then we've gotten the signal_struct.live
counter, and do_exit can reliably do group-wide cleanup work.

This patch moves the call to do_exit, where it's made without locks.  This
avoids the deadlock issues that the old __exit_signal code's comment talks
about, and the one that Oleg found recently with process CPU timers.

[ This replaces e03d13e985d48ac4885382c9e3b1510c78bd047f, which is why
  it was just reverted. ]

Signed-off-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/exit.c
kernel/posix-timers.c
kernel/signal.c