History

cgroup: fix a failure path in create_css()

If online_css() fails, we should remove cgroup files belonging to css->ss.

Li Zefan committed 12 years ago

Commit 3eb59ec1 parent 99afb0f1 file · +7 −4Browse files

Unified · Split

kernel/cgroup.c+7−4
@@ -4112,17 +4112,17 @@ static int create_css(struct cgroup *cgrp, struct cgroup_subsys *ss) · 4111 unmodified lines
41124112
41134113 err = percpu_ref_init(&css->refcnt, css_release);
41144114 if (err)
4115− goto err_free;
4115+ goto err_free_css;
41164116
41174117 init_css(css, ss, cgrp);
41184118
41194119 err = cgroup_populate_dir(cgrp, 1 << ss->subsys_id);
41204120 if (err)
4121− goto err_free;
4121+ goto err_free_percpu_ref;
41224122
41234123 err = online_css(css);
41244124 if (err)
4125− goto err_free;
4125+ goto err_clear_dir;
41264126
41274127 dget(cgrp->dentry);
41284128 css_get(css->parent);
@@ -4138,8 +4138,11 @@ static int create_css(struct cgroup *cgrp, struct cgroup_subsys *ss) · 9 unmodified lines
41384138
41394139 return 0;
41404140
4141−err_free:
4141+err_clear_dir:
4142+ cgroup_clear_dir(css->cgroup, 1 << css->ss->subsys_id);
4143+err_free_percpu_ref:
41424144 percpu_ref_cancel_init(&css->refcnt);
4145+err_free_css:
41434146 ss->css_free(css);
41444147 return err;
41454148 }