|
@@ -4451,24 +4451,8 @@ int __init_or_module cgroup_load_subsys(struct cgroup_subsys *ss)
|
|
|
/* init base cftset */
|
|
|
cgroup_init_cftsets(ss);
|
|
|
|
|
|
- /*
|
|
|
- * need to register a subsys id before anything else - for example,
|
|
|
- * init_cgroup_css needs it.
|
|
|
- */
|
|
|
mutex_lock(&cgroup_mutex);
|
|
|
- /* find the first empty slot in the array */
|
|
|
- for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) {
|
|
|
- if (subsys[i] == NULL)
|
|
|
- break;
|
|
|
- }
|
|
|
- if (i == CGROUP_SUBSYS_COUNT) {
|
|
|
- /* maximum number of subsystems already registered! */
|
|
|
- mutex_unlock(&cgroup_mutex);
|
|
|
- return -EBUSY;
|
|
|
- }
|
|
|
- /* assign ourselves the subsys_id */
|
|
|
- ss->subsys_id = i;
|
|
|
- subsys[i] = ss;
|
|
|
+ subsys[ss->subsys_id] = ss;
|
|
|
|
|
|
/*
|
|
|
* no ss->create seems to need anything important in the ss struct, so
|
|
@@ -4477,7 +4461,7 @@ int __init_or_module cgroup_load_subsys(struct cgroup_subsys *ss)
|
|
|
css = ss->create(dummytop);
|
|
|
if (IS_ERR(css)) {
|
|
|
/* failure case - need to deassign the subsys[] slot. */
|
|
|
- subsys[i] = NULL;
|
|
|
+ subsys[ss->subsys_id] = NULL;
|
|
|
mutex_unlock(&cgroup_mutex);
|
|
|
return PTR_ERR(css);
|
|
|
}
|
|
@@ -4493,7 +4477,7 @@ int __init_or_module cgroup_load_subsys(struct cgroup_subsys *ss)
|
|
|
if (ret) {
|
|
|
dummytop->subsys[ss->subsys_id] = NULL;
|
|
|
ss->destroy(dummytop);
|
|
|
- subsys[i] = NULL;
|
|
|
+ subsys[ss->subsys_id] = NULL;
|
|
|
mutex_unlock(&cgroup_mutex);
|
|
|
return ret;
|
|
|
}
|