signal: Fix racy access to __task_cred in kill_pid_info_as_uid()
authorThomas Gleixner <tglx@linutronix.de>
Thu, 10 Dec 2009 00:53:17 +0000 (00:53 +0000)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 10 Dec 2009 22:04:11 +0000 (23:04 +0100)
commit14d8c9f3c09e7fd7b9af80904289fe204f5b93c6
tree1c373436517c5853aab0e99cce83364a21134d0e
parentea5b41f9d595be354f7a50e56b28c2d72e6e88a5
signal: Fix racy access to __task_cred in kill_pid_info_as_uid()

kill_pid_info_as_uid() accesses __task_cred() without being in a RCU
read side critical section. tasklist_lock is not protecting that when
CONFIG_TREE_PREEMPT_RCU=y.

Convert the whole tasklist_lock section to rcu and use
lock_task_sighand to prevent the exit race.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
LKML-Reference: <20091210004703.232302055@linutronix.de>
Acked-by: Oleg Nesterov <oleg@redhat.com>
kernel/signal.c