[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 e03d13e985
, which is why
it was just reverted. ]
Signed-off-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
9465bee863
commit
25f407f0b6
@@ -1157,7 +1157,7 @@ retry_delete:
|
||||
}
|
||||
|
||||
/*
|
||||
* This is called by __exit_signal, only when there are no more
|
||||
* This is called by do_exit or de_thread, only when there are no more
|
||||
* references to the shared signal_struct.
|
||||
*/
|
||||
void exit_itimers(struct signal_struct *sig)
|
||||
|
Reference in New Issue
Block a user