Messages in this thread | | | Date | Wed, 29 Oct 2014 20:21:42 +0100 | From | Oleg Nesterov <> | Subject | Re: [PATCH] sched: Fix race between task_group and sched_task_group |
| |
On 10/29, Kirill Tkhai wrote: > > On 29.10.2014 01:52, Oleg Nesterov wrote: > > > And cgroup_task_migrate() can free ->cgroups via call_rcu(). Of course, > > in practice raw_spin_lock_irq() should also act as rcu_read_lock(), but > > we should not rely on implementation details. > > Do you mean cgroup_task_migrate()->put_css_set_locked()? It's not > possible there, because old_cset->refcount is lager than 1. We increment > it in cgroup_migrate_add_src() and real freeing happens in > cgroup_migrate_finish(). These functions are around task_migrate(), they > are pair brackets.
Ah, I see.
> If we've got old_cset in > cgroup_post_fork()->sched_move_task(), the right sched_task_group will > be installed by attach->sched_move_task().
Yes, yes, this part is clear.
OK, I think the patch is fine then.
Thanks!
Oleg.
| |