Re: Is not locking task_lock in cgroup_fork() safe?
From: Li Zefan <hidden>
Date: 2012-10-08 05:46:18
On 2012/10/8 10:01, Tejun Heo wrote:
On Mon, Oct 08, 2012 at 11:00:00AM +0900, Tejun Heo wrote:quoted
7e381b0eb1 ("cgroup: Drop task_lock(parent) on cgroup_fork()") removed task_lock from cgroup_fork citing that current->cgroups can't change due to threadgroup_change locking; however, threadgroup_change locking is used only during CLONE_THREAD forking. If @current is forking a new process, there's nothing preventing someone else to migrate the parent while forking is in progress and delete the css_set it currently is using. Am I confused somewhere?
You're right. threadgroup lock is held unconditionally in attach_task_py_pid(), but it's held only for CLONE_THREAD in fork path, which I guess I overlooked when reviewing the patch.
Also, please note that task_lock is likely to be hot on local CPU at that point and avoiding it there might not really buy much.
Reverting that commit should be fine.