blkcg: fix error return path in blkg_create()
authorTejun Heo <tj@kernel.org>
Tue, 14 May 2013 20:52:30 +0000 (13:52 -0700)
committerTejun Heo <tj@kernel.org>
Tue, 14 May 2013 20:52:30 +0000 (13:52 -0700)
In blkg_create(), after lookup of parent fails, the control jumps to
error path with the error code encoded into @blkg.  The error path
doesn't use @blkg for the return value.  It returns ERR_PTR(ret).
Make lookup fail path set @ret instead of @blkg.

Note that the parent lookup is guaranteed to succeed at that point and
the condition check is purely for sanity and triggers WARN when fails.
As such, I don't think it's necessary to mark it for -stable.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
block/blk-cgroup.c

index e8918ffaf96d4a0a2dacf75838b5d8a89e5e8ca3..7fc35f683c4e208be67890d226b315d8e6bf5bfd 100644 (file)
@@ -238,7 +238,7 @@ static struct blkcg_gq *blkg_create(struct blkcg *blkcg,
        if (blkcg_parent(blkcg)) {
                blkg->parent = __blkg_lookup(blkcg_parent(blkcg), q, false);
                if (WARN_ON_ONCE(!blkg->parent)) {
-                       blkg = ERR_PTR(-EINVAL);
+                       ret = -EINVAL;
                        goto err_put_css;
                }
                blkg_get(blkg->parent);