2008-03-24 18:31:49

by Oleg Nesterov

[permalink] [raw]
Subject: [PATCH 0/2] pids: initial fixes, unsafe dereference of the special pids

Without rcu ot tasklist lock held, it is not safe to dereference the
result of task_session/task_pgrp. Even if the task == current.

Because we can race with another thread doing setpgrp/setsid, and use
the already freed/reused/unmapped memory if preempted.

The problem is old, surprisingly it wasn't noticed before. Fortunately
it is not very serious.

We have a lot of users which should be fixed. This series only fixes
sys_getsid/sys_getpgid syscalls.

Perhaps we can (should) add rcu lock/unlock to task_xxx_vnr(), but I'm
not sure. In any case, I think it is good to factor out pid_vnr() calls
like these patches do.

Oleg.