linux/kernel
Roland McGrath fec1d01152 [PATCH] Disable CLONE_CHILD_CLEARTID for abnormal exit
The CLONE_CHILD_CLEARTID flag is used by NPTL to have its threads
communicate via memory/futex when they exit, so pthread_join can
synchronize using a simple futex wait.  The word of user memory where NPTL
stores a thread's own TID is what it passes; this gets reset to zero at
thread exit.

It is not desireable to touch this user memory when threads are dying due
to a fatal signal.  A core dump is more usefully representative of the
dying program state if the threads live at the time of the crash have their
NPTL data structures unperturbed.  The userland expectation of
CLONE_CHILD_CLEARTID has only ever been that it works for a thread making
an _exit system call.

This problem was identified by Ernie Petrides <petrides@redhat.com>.

Signed-off-by: Roland McGrath <roland@redhat.com>
Cc: Ernie Petrides <petrides@redhat.com>
Cc: Jakub Jelinek <jakub@redhat.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Cc: Ulrich Drepper <drepper@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-07 08:39:33 -08:00
..
irq
power [PATCH] Export pm_suspend for the shared APM emulation 2006-12-07 08:39:32 -08:00
time
.gitignore
acct.c
audit.c [PATCH] Add include/linux/freezer.h and move definitions from sched.h 2006-12-07 08:39:27 -08:00
audit.h
auditfilter.c
auditsc.c [PATCH] severing skbuff.h -> highmem.h 2006-12-04 02:00:29 -05:00
capability.c
compat.c
configs.c
cpu.c [PATCH] suspend: don't change cpus_allowed for task initiating the suspend 2006-12-07 08:39:28 -08:00
cpuset.c [PATCH] cpuset: minor code refinements 2006-12-07 08:39:32 -08:00
delayacct.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
dma.c
exec_domain.c
exit.c
extable.c
fork.c [PATCH] Disable CLONE_CHILD_CLEARTID for abnormal exit 2006-12-07 08:39:33 -08:00
futex_compat.c
futex.c [PATCH] mm: pagefault_{disable,enable}() 2006-12-07 08:39:21 -08:00
hrtimer.c
itimer.c
kallsyms.c [PATCH] /proc/kallsyms reports lower-case types for some non-exported symbols 2006-12-07 08:39:31 -08:00
Kconfig.hz
Kconfig.preempt
kexec.c
kfifo.c
kmod.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 14:37:56 +00:00
kprobes.c
ksysfs.c
kthread.c
latency.c [PATCH] severing module.h->sched.h 2006-12-04 02:00:22 -05:00
lockdep_internals.h
lockdep_proc.c
lockdep.c [PATCH] lockdep: misc fixes in lockdep.c 2006-12-07 08:39:33 -08:00
Makefile
module.c [PATCH] severing module.h->sched.h 2006-12-04 02:00:22 -05:00
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
nsproxy.c
panic.c
params.c
pid.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
posix-cpu-timers.c
posix-timers.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
printk.c
profile.c
ptrace.c
rcupdate.c
rcutorture.c
relay.c
resource.c
rtmutex_common.h
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c [PATCH] Add include/linux/freezer.h and move definitions from sched.h 2006-12-07 08:39:27 -08:00
rtmutex.c
rtmutex.h
rwsem.c
sched.c [PATCH] SysRq-X: show blocked tasks 2006-12-07 08:39:32 -08:00
seccomp.c
signal.c [PATCH] Add include/linux/freezer.h and move definitions from sched.h 2006-12-07 08:39:27 -08:00
softirq.c
softlockup.c
spinlock.c
srcu.c
stacktrace.c
stop_machine.c
sys_ni.c
sys.c
sysctl.c [PATCH] new scheme to preempt swap token 2006-12-07 08:39:21 -08:00
taskstats.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
time.c
timer.c
tsacct.c
uid16.c
unwind.c
user.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
utsname.c
wait.c
workqueue.c [PATCH] Support for freezeable workqueues 2006-12-07 08:39:29 -08:00