| From b58c89986a77a23658682a100eb15d8edb571ebb Mon Sep 17 00:00:00 2001 |
| From: Tejun Heo <tj@kernel.org> |
| Date: Sat, 8 Feb 2014 10:26:33 -0500 |
| Subject: cgroup: fix error return from cgroup_create() |
| |
| From: Tejun Heo <tj@kernel.org> |
| |
| commit b58c89986a77a23658682a100eb15d8edb571ebb upstream. |
| |
| cgroup_create() was returning 0 after allocation failures. Fix it. |
| |
| Signed-off-by: Tejun Heo <tj@kernel.org> |
| Acked-by: Li Zefan <lizefan@huawei.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| kernel/cgroup.c | 10 +++++++--- |
| 1 file changed, 7 insertions(+), 3 deletions(-) |
| |
| --- a/kernel/cgroup.c |
| +++ b/kernel/cgroup.c |
| @@ -4348,7 +4348,7 @@ static long cgroup_create(struct cgroup |
| struct cgroup *cgrp; |
| struct cgroup_name *name; |
| struct cgroupfs_root *root = parent->root; |
| - int err = 0; |
| + int err; |
| struct cgroup_subsys *ss; |
| struct super_block *sb = root->sb; |
| |
| @@ -4358,8 +4358,10 @@ static long cgroup_create(struct cgroup |
| return -ENOMEM; |
| |
| name = cgroup_alloc_name(dentry); |
| - if (!name) |
| + if (!name) { |
| + err = -ENOMEM; |
| goto err_free_cgrp; |
| + } |
| rcu_assign_pointer(cgrp->name, name); |
| |
| /* |
| @@ -4367,8 +4369,10 @@ static long cgroup_create(struct cgroup |
| * a half-baked cgroup. |
| */ |
| cgrp->id = idr_alloc(&root->cgroup_idr, NULL, 1, 0, GFP_KERNEL); |
| - if (cgrp->id < 0) |
| + if (cgrp->id < 0) { |
| + err = -ENOMEM; |
| goto err_free_name; |
| + } |
| |
| /* |
| * Only live parents can have children. Note that the liveliness |