Oleg Nesterov 4a2c7a7837 [PATCH] make fork() atomic wrt pgrp/session signals
Eric W. Biederman wrote:
>
> Ok. SUSV3/Posix is clear, fork is atomic with respect
> to signals.  Either a signal comes before or after a
> fork but not during. (See the rationale section).
> http://www.opengroup.org/onlinepubs/000095399/functions/fork.html
>
> The tasklist_lock does not stop forks from adding to a process
> group. The forks stall while the tasklist_lock is held, but a fork
> that began before we grabbed the tasklist_lock simply completes
> afterwards, and the child does not receive the signal.

This also means that SIGSTOP or sig_kernel_coredump() signal can't
be delivered to pgrp/session reliably.

With this patch copy_process() returns -ERESTARTNOINTR when it
detects a pending signal, fork() will be restarted transparently
after handling the signals.

This patch also deletes now unneeded "group_stop_count > 0" check,
copy_process() can no longer succeed while group stop in progress.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Acked-By: Eric Biederman <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-28 18:36:44 -08:00
..
2006-01-11 18:42:13 -08:00
2006-03-20 14:08:55 -05:00
2006-03-20 14:08:55 -05:00
2005-04-16 15:20:36 -07:00
2006-03-28 18:36:44 -08:00
2005-04-16 15:20:36 -07:00
2006-03-26 08:57:03 -08:00
2006-03-26 08:57:03 -08:00
2005-10-30 17:37:32 -08:00
2006-01-11 18:42:13 -08:00
2005-10-08 15:00:57 -07:00
2006-03-28 09:16:02 -08:00
2006-01-09 15:59:19 -08:00
2005-04-16 15:20:36 -07:00
2006-03-26 08:57:03 -08:00
2006-03-25 08:23:02 -08:00
2006-01-11 18:42:13 -08:00
2006-03-24 07:33:20 -08:00
2005-04-16 15:20:36 -07:00