diff --git a/fs/filescontrol.c b/fs/filescontrol.c index fbaeacbe2de886cde67cdaa271fea70496313ac5..5ec5096383c3d55cd854be03ee1491b7b8b5cf81 100644 --- a/fs/filescontrol.c +++ b/fs/filescontrol.c @@ -171,7 +171,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; } @@ -311,6 +311,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); } @@ -320,6 +323,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);