Is not locking task_lock in cgroup_fork() safe?
fweisbec at gmail.com
Mon Oct 8 12:58:13 UTC 2012
2012/10/8 Tejun Heo <tj at kernel.org>:
> On Mon, Oct 08, 2012 at 11:00:00AM +0900, Tejun Heo wrote:
>> 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?
> 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.
Locks are expensive anyway. And I think cgroup has enough of them in
that hot path that fork is (threadgroup_lock, css_set_lock, ...)
More information about the Containers