]> err.no Git - linux-2.6/commit
[PATCH] do __unhash_process() under ->siglock
authorOleg Nesterov <oleg@tv-sign.ru>
Wed, 29 Mar 2006 00:11:20 +0000 (16:11 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 29 Mar 2006 02:36:43 +0000 (18:36 -0800)
commit5876700cd399112ecfa70df36203c8c6660d84f8
tree3060724c6682ee7452bcb7b3c99eded75cd59ea7
parent35f5cad8c4bab94ecc5acdc4055df5ea12dc76f8
[PATCH] do __unhash_process() under ->siglock

This patch moves __unhash_process() call from realease_task() to
__exit_signal(), so __detach_pid() is called with ->siglock held.

This means we don't need tasklist_lock to iterate over thread group anymore:

copy_process() was already changed to do attach_pid()
under ->siglock.

Eric's "pidhash-kill-switch_exec_pids.patch" from -mm
changed de_thread() so it doesn't touch PIDTYPE_TGID.

NOTE: de_thread() still needs some attention.  It still changes task->pid
lockless.  Taking ->sighand.siglock here allows to do more tasklist_lock
removals.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/exit.c