From: He Zhe <zhe...@windriver.com>

The original patch is based on:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
fad01e866afdbe01a1f3ec06a39c3a8b9e197014
3.15-rc8

Modify variable and macro in fs/filescontrol.c and include/linux/cgroup_subsys.h
according to target version. Correct wrong handling which causes boot failure in
fs/file.c.

Signed-off-by: He Zhe <zhe...@windriver.com>
---
 fs/file.c                     |    6 ++++--
 fs/filescontrol.c             |   12 +++++++-----
 include/linux/cgroup_subsys.h |    2 +-
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/fs/file.c b/fs/file.c
index 4b84070..e615dc9 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -820,8 +820,10 @@ static int do_dup2(struct files_struct *files,
 
 #ifdef CONFIG_CGROUP_FILES
        if (!tofree)
-               if (!files_cgroup_alloc_fd(files, 1))
-                       goto Ebusy;
+               if (files_cgroup_alloc_fd(files, 1)) {
+                       spin_unlock(&files->file_lock);
+                       return -EMFILE;
+               }
 #endif
 
        get_file(file);
diff --git a/fs/filescontrol.c b/fs/filescontrol.c
index c532d02..0ba8ffa 100644
--- a/fs/filescontrol.c
+++ b/fs/filescontrol.c
@@ -23,8 +23,8 @@
 #include <linux/fs.h>
 #include <linux/fdtable.h>
 
-struct cgroup_subsys files_cgrp_subsys __read_mostly;
-EXPORT_SYMBOL(files_cgrp_subsys);
+struct cgroup_subsys files_subsys __read_mostly;
+EXPORT_SYMBOL(files_subsys);
 
 struct files_cgroup {
        struct cgroup_subsys_state css;
@@ -92,9 +92,10 @@ u64 files_cgroup_count_fds(struct files_struct *files)
 
 static u64 files_in_taskset(struct cgroup_taskset *tset)
 {
+       struct cgroup_subsys_state *css = NULL;
        struct task_struct *task;
        u64 files = 0;
-       cgroup_taskset_for_each(task, tset) {
+       cgroup_taskset_for_each(task, css, tset) {
                if (!thread_group_leader(task))
                        continue;
 
@@ -212,13 +213,14 @@ static struct cftype files[] = {
        { }
 };
 
-struct cgroup_subsys files_cgrp_subsys = {
+struct cgroup_subsys files_subsys = {
        .name = "files",
        .css_alloc = files_cgroup_css_alloc,
        .css_free = files_cgroup_css_free,
        .can_attach = files_cgroup_can_attach,
        .attach = files_cgroup_attach,
        .base_cftypes = files,
+       .subsys_id = files_subsys_id,
 };
 
 void files_cgroup_assign(struct files_struct *files)
@@ -227,7 +229,7 @@ void files_cgroup_assign(struct files_struct *files)
        struct cgroup_subsys_state *css;
 
        task_lock(tsk);
-       css = task_css(tsk, files_cgrp_id);
+       css = task_css(tsk, files_subsys_id);
        css_get(css);
        files->files_cgroup = container_of(css, struct files_cgroup, css);
        task_unlock(tsk);
diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
index e6c9a40..defadc0 100644
--- a/include/linux/cgroup_subsys.h
+++ b/include/linux/cgroup_subsys.h
@@ -51,7 +51,7 @@ SUBSYS(net_prio)
 SUBSYS(hugetlb)
 #endif
 
-#if IS_ENABLED(CONFIG_CGROUP_FILES)
+#if IS_SUBSYS_ENABLED(CONFIG_CGROUP_FILES)
 SUBSYS(files)
 #endif
 
-- 
1.7.9.5

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to