linux-stable/include
Oleg Nesterov e442055193 signals: re-assign CLD_CONTINUED notification from the sender to reciever
Based on discussion with Jiri and Roland.

In short: currently handle_stop_signal(SIGCONT, p) sends the notification to
p->parent, with this patch p itself notifies its parent when it becomes
running.

handle_stop_signal(SIGCONT) has to drop ->siglock temporary in order to notify
the parent with do_notify_parent_cldstop().  This leads to multiple problems:

	- as Jiri Kosina pointed out, the stopped task can resume without
	  actually seeing SIGCONT which may have a handler.

	- we race with another sig_kernel_stop() signal which may come in
	  that window.

	- we race with sig_fatal() signals which may set SIGNAL_GROUP_EXIT
	  in that window.

	- we can't avoid taking tasklist_lock() while sending SIGCONT.

With this patch handle_stop_signal() just sets the new SIGNAL_CLD_CONTINUED
flag in p->signal->flags and returns.  The notification is sent by the first
task which returns from finish_stop() (there should be at least one) or any
other signalled thread from get_signal_to_deliver().

This is a user-visible change.  Say, currently kill(SIGCONT, stopped_child)
can't return without seeing SIGCHLD, with this patch SIGCHLD can be delayed
unpredictably.  Another difference is that if the child is ptraced by another
process, CLD_CONTINUED may be delivered to ->real_parent after ptrace_detach()
while currently it always goes to the tracer which doesn't actually need this
notification.  Hopefully not a problem.

The patch asks for the futher obvious cleanups, I'll send them separately.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Roland McGrath <roland@redhat.com>
Cc: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-04-30 08:29:34 -07:00
..
acpi
asm-alpha kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-arm pxafb: preliminary smart panel interface support 2008-04-30 08:29:32 -07:00
asm-avr32 kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-blackfin kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-cris kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-frv kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-generic kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-h8300 kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-ia64 [IA64] Provide ACPI fixup for /proc/cpuinfo/physical_id 2008-04-29 15:05:29 -07:00
asm-m32r kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-m68k kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-m68knommu kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-mips kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-mn10300 kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-parisc kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-powerpc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2008-04-29 08:19:14 -07:00
asm-ppc [RAPIDIO] Move include/asm-ppc/rio.h to asm-powerpc 2008-04-29 19:40:27 +10:00
asm-s390 kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-sh kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-sparc kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-sparc64 kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-um kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-v850 kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
asm-x86 [IA64] Provide ACPI fixup for /proc/cpuinfo/physical_id 2008-04-29 15:05:29 -07:00
asm-xtensa kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
crypto [CRYPTO] aes: Export generic setkey 2008-04-21 10:19:34 +08:00
keys KEYS: Fix the comment to match the file name in rxrpc-type.h. 2008-04-21 22:43:55 +00:00
linux signals: re-assign CLD_CONTINUED notification from the sender to reciever 2008-04-30 08:29:34 -07:00
math-emu
media Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb 2008-04-29 14:53:40 -07:00
mtd
net Merge branch 'audit.b50' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current 2008-04-29 11:41:22 -07:00
pcmcia
rdma IB: expand ib_umem_get() prototype 2008-04-29 08:06:12 -07:00
rxrpc
scsi IB/iser: Count FMR alignment violations per session 2008-04-29 13:46:52 -07:00
sound [ALSA] Add MPU401_INFO_NO_ACK bitflag 2008-04-29 19:01:56 +02:00
video fbdev: platforming hecubafb and n411 2008-04-28 08:58:41 -07:00
xen xen: add balloon driver 2008-04-24 23:57:33 +02:00
Kbuild