Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1427966 > unrolled thread

[PATCH cgroup/for-4.8] cgroup: allow NULL return from ss->css_alloc()

Started byTejun Heo <tj@kernel.org>
First post2016-06-21 19:10 +0200
Last post2016-06-21 21:00 +0200
Articles 3 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH cgroup/for-4.8] cgroup: allow NULL return from ss->css_alloc() Tejun Heo <tj@kernel.org> - 2016-06-21 19:10 +0200
    Re: [PATCH cgroup/for-4.8] cgroup: allow NULL return from  ss->css_alloc() Johannes Weiner <hannes@cmpxchg.org> - 2016-06-21 20:20 +0200
      Re: [PATCH cgroup/for-4.8] cgroup: allow NULL return from  ss->css_alloc() Tejun Heo <tj@kernel.org> - 2016-06-21 21:00 +0200

#1427966 — [PATCH cgroup/for-4.8] cgroup: allow NULL return from ss->css_alloc()

FromTejun Heo <tj@kernel.org>
Date2016-06-21 19:10 +0200
Subject[PATCH cgroup/for-4.8] cgroup: allow NULL return from ss->css_alloc()
Message-ID<rMxlv-eK-17@gated-at.bofh.it>
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>
---
Hello,

I'm applying this patch to cgroup/for-4.8.

Thanks.

 kernel/cgroup.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 86cb5c6..8e5470d 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -5139,6 +5139,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;
 

[toc] | [next] | [standalone]


#1428040 — Re: [PATCH cgroup/for-4.8] cgroup: allow NULL return from ss->css_alloc()

FromJohannes Weiner <hannes@cmpxchg.org>
Date2016-06-21 20:20 +0200
SubjectRe: [PATCH cgroup/for-4.8] cgroup: allow NULL return from ss->css_alloc()
Message-ID<rMyrg-TU-9@gated-at.bofh.it>
In reply to#1427966
On Tue, Jun 21, 2016 at 01:06:24PM -0400, Tejun Heo wrote:
> 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>

Would it be better to remove the error code instead and have everybody
return NULL? AFAICS, everybody is returning either the object or the
-ENOMEM error code right now.

What error condition is there for an allocation function?

[toc] | [prev] | [next] | [standalone]


#1428082 — Re: [PATCH cgroup/for-4.8] cgroup: allow NULL return from ss->css_alloc()

FromTejun Heo <tj@kernel.org>
Date2016-06-21 21:00 +0200
SubjectRe: [PATCH cgroup/for-4.8] cgroup: allow NULL return from ss->css_alloc()
Message-ID<rMz43-172-29@gated-at.bofh.it>
In reply to#1428040
Hello,

On Tue, Jun 21, 2016 at 02:14:04PM -0400, Johannes Weiner wrote:
> Would it be better to remove the error code instead and have everybody
> return NULL? AFAICS, everybody is returning either the object or the
> -ENOMEM error code right now.
> 
> What error condition is there for an allocation function?

I already changed cgroup core to interpret NULL return as -ENOMEM.
Maybe we can drop ERR_PTR handling altogether in the future but I'm
not sure.  e.g. memcg's id allocation and -ENOSPC check could be in
css_alloc.  The thing is css_online is only necessary if there are
requirements around css id or iteration, so css_alloc can easily be
the only alloc / init point and thus should be able to indicate
different failure conditions.

Thanks.

-- 
tejun

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web