diff --git a/fs/filescontrol.c b/fs/filescontrol.c index a24be705f6212d10b1b9ecd2e34d607c5f11b46b..db0beee474b271a5a7c7e559734ac0fe2fec3042 100644 --- a/fs/filescontrol.c +++ b/fs/filescontrol.c @@ -164,7 +164,7 @@ static void files_cgroup_attach(struct cgroup_taskset *tset) task_lock(task); files = task->files; - if (!files) { + if (!files || files == &init_files) { task_unlock(task); return; } @@ -325,6 +325,9 @@ void files_cgroup_assign(struct files_struct *files) { struct cgroup_subsys_state *css; + if (files == &init_files) + return; + css = task_get_css(current, files_cgrp_id); files->files_cgroup = container_of(css, struct files_cgroup, css); } @@ -334,6 +337,9 @@ void files_cgroup_remove(struct files_struct *files) struct task_struct *tsk = current; struct files_cgroup *fcg; + if (files == &init_files) + return; + task_lock(tsk); spin_lock(&files->file_lock); fcg = files_cgroup_from_files(files);