* Li Zefan <lizefan@xxxxxxxxxx> wrote: > This is a preparaton for later patches. > > - What do we gain from cpu_cgroup_css_online(): > > After ss->css_alloc() and before ss->css_online(), there's a small > window that tg->css.cgroup is NULL. With this change, tg won't be seen > before ss->css_online(), where it's added to the global list, so we're > guaranteed we'll never see NULL tg->css.cgroup. > > - What do we gain from cpu_cgroup_css_offline(): > > tg is freed via RCU, so is cgroup. Without this change, This is how > synchronization works: > > cgroup_rmdir() > no ss->css_offline() > diput() > syncornize_rcu() > ss->css_free() <-- unregister tg, and free it via call_rcu() > kfree_rcu(cgroup) <-- wait possible refs to cgroup, and free cgroup > > We can't just kfree(cgroup), because tg might access tg->css.cgroup. > > With this change: > > cgroup_rmdir() > ss->css_offline() <-- unregister tg > diput() > synchronize_rcu() <-- wait possible refs to tg and cgroup > ss->css_free() <-- free tg > kfree_rcu(cgroup) <-- free cgroup > > As you see, kfree_rcu() is redundant now. > > Signed-off-by: Li Zefan <lizefan@xxxxxxxxxx> Acked-by: Ingo Molnar <mingo@xxxxxxxxxx> Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html