proc: remove races from proc_id_readdir()
authorEric W. Biederman <ebiederm@xmission.com>
Thu, 29 Nov 2007 00:21:26 +0000 (16:21 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Thu, 29 Nov 2007 17:24:52 +0000 (09:24 -0800)
commit19fd4bb2a0cfede054e4904e0b167e0ca4f36cc7
treee37d0ee2c7ea08f6d8721a4e9e807f85994b608a
parentc895078355b6b6e05c60aa205892526dd3390f0a
proc: remove races from proc_id_readdir()

Oleg noticed that the call of task_pid_nr_ns() in proc_pid_readdir
is racy with respect to tasks exiting.

After a bit of examination it also appears that the call itself
is completely unnecessary.

So to fix the problem this patch modifies next_tgid() to return
both a tgid and the task struct in question.

A structure is introduced to return these values because it is
slightly cleaner and easier to optimize, and the resulting code
is a little shorter.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/proc/base.c