summaryrefslogtreecommitdiffstats
path: root/kernel/cgroup.c
diff options
context:
space:
mode:
authorTejun Heo2016-06-21 19:06:24 +0200
committerTejun Heo2016-06-21 19:07:09 +0200
commite7e15b87f86d4a48c270b81cf027eafd801e5b89 (patch)
tree59241241f8869ddd66c0056731f26ec5d61fcd53 /kernel/cgroup.c
parentcgroup: remove unnecessary 0 check from css_from_id() (diff)
downloadkernel-qcow2-linux-e7e15b87f86d4a48c270b81cf027eafd801e5b89.tar.gz
kernel-qcow2-linux-e7e15b87f86d4a48c270b81cf027eafd801e5b89.tar.xz
kernel-qcow2-linux-e7e15b87f86d4a48c270b81cf027eafd801e5b89.zip
cgroup: allow NULL return from ss->css_alloc()
cgroup core expected css_alloc to return an ERR_PTR value on failure and caused NULL deref if it returned NULL. It's an easy mistake to make from an alloc function and there's no ambiguity in what's being indicated. Update css_create() so that it interprets NULL return from css_alloc as -ENOMEM. Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel/cgroup.c')
-rw-r--r--kernel/cgroup.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 78f6d18ff0af..dd26e1bb7222 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -5133,6 +5133,8 @@ static struct cgroup_subsys_state *css_create(struct cgroup *cgrp,
lockdep_assert_held(&cgroup_mutex);
css = ss->css_alloc(parent_css);
+ if (!css)
+ css = ERR_PTR(-ENOMEM);
if (IS_ERR(css))
return css;