> 105347ba5 ("cgroup: make cgroup_file_open() rcu_read_lock() around > cgroup_css() and add cfent->css") added cfent->css to cache the > associted cgroup_subsys_state across file operations. > > A cfent is associated with single css throughout its lifetime and the > origimal commit initialized the cache pointer during cgroup_add_file() > and verified that it matches the actual one in cgroup_file_open(). > While this works fine for !root cgroups, it's broken for root cgroups > as files in a root cgroup are created before the css's are associated > with the cgroup and thus cgroup_css() call in cgroup_add_file() > returns NULL associating all cfents in the root cgroup with NULL css. > This makes cgroup_file_open() trigger WARN and fail with -ENODEV for > all !core subsystem files in the root cgroups. > > There's no reason to initialize cfent->css separately from > cgroup_add_file(). As the association never changes, > cgroup_file_open() can set it unconditionally every time and > containing the logic in cgroup_file_open() makes more sense anyway as > the only reason it's necessary is file->private_data being already > occupied. > > Fix it by setting cfent->css unconditionally from cgroup_file_open(). > > Signed-off-by: Tejun Heo <tj@xxxxxxxxxx> Acked-by: Li Zefan <lizefan@xxxxxxxxxx> _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/containers