|
@@ -2936,14 +2936,17 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry,
|
|
|
|
|
|
for_each_subsys(root, ss) {
|
|
|
struct cgroup_subsys_state *css = ss->create(ss, cgrp);
|
|
|
+
|
|
|
if (IS_ERR(css)) {
|
|
|
err = PTR_ERR(css);
|
|
|
goto err_destroy;
|
|
|
}
|
|
|
init_cgroup_css(css, ss, cgrp);
|
|
|
- if (ss->use_id)
|
|
|
- if (alloc_css_id(ss, parent, cgrp))
|
|
|
+ if (ss->use_id) {
|
|
|
+ err = alloc_css_id(ss, parent, cgrp);
|
|
|
+ if (err)
|
|
|
goto err_destroy;
|
|
|
+ }
|
|
|
/* At error, ->destroy() callback has to free assigned ID. */
|
|
|
}
|
|
|
|