cgroup: fix error return value from cgroup_subtree_control()
authorTejun Heo <tj@kernel.org>
Sun, 23 Jul 2017 12:14:15 +0000 (08:14 -0400)
committerTejun Heo <tj@kernel.org>
Sun, 23 Jul 2017 12:15:17 +0000 (08:15 -0400)
While refactoring, f7b2814bb9b6 ("cgroup: factor out
cgroup_{apply|finalize}_control() from
cgroup_subtree_control_write()") broke error return value from the
function.  The return value from the last operation is always
overridden to zero.  Fix it.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: stable@vger.kernel.org # v4.6+
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/cgroup/cgroup.c

index 744975947d01b2b865927fee8ec6cbec5aa034c8..df2e0f14a95d8e75ecbf424a0e308cc52d5b5eb2 100644 (file)
@@ -3001,11 +3001,11 @@ static ssize_t cgroup_subtree_control_write(struct kernfs_open_file *of,
        cgrp->subtree_control &= ~disable;
 
        ret = cgroup_apply_control(cgrp);
-
        cgroup_finalize_control(cgrp, ret);
+       if (ret)
+               goto out_unlock;
 
        kernfs_activate(cgrp->kn);
-       ret = 0;
 out_unlock:
        cgroup_kn_unlock(of->kn);
        return ret ?: nbytes;