diff options
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-cgroup.c | 8 | ||||
-rw-r--r-- | block/cfq-iosched.c | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 60bb049b6106..a6809645d212 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c | |||
@@ -956,16 +956,16 @@ static void blkiocg_destroy(struct cgroup_subsys *subsys, struct cgroup *cgroup) | |||
956 | static struct cgroup_subsys_state * | 956 | static struct cgroup_subsys_state * |
957 | blkiocg_create(struct cgroup_subsys *subsys, struct cgroup *cgroup) | 957 | blkiocg_create(struct cgroup_subsys *subsys, struct cgroup *cgroup) |
958 | { | 958 | { |
959 | struct blkio_cgroup *blkcg, *parent_blkcg; | 959 | struct blkio_cgroup *blkcg; |
960 | struct cgroup *parent = cgroup->parent; | ||
960 | 961 | ||
961 | if (!cgroup->parent) { | 962 | if (!parent) { |
962 | blkcg = &blkio_root_cgroup; | 963 | blkcg = &blkio_root_cgroup; |
963 | goto done; | 964 | goto done; |
964 | } | 965 | } |
965 | 966 | ||
966 | /* Currently we do not support hierarchy deeper than two level (0,1) */ | 967 | /* Currently we do not support hierarchy deeper than two level (0,1) */ |
967 | parent_blkcg = cgroup_to_blkio_cgroup(cgroup->parent); | 968 | if (parent != cgroup->top_cgroup) |
968 | if (css_depth(&parent_blkcg->css) > 0) | ||
969 | return ERR_PTR(-EINVAL); | 969 | return ERR_PTR(-EINVAL); |
970 | 970 | ||
971 | blkcg = kzalloc(sizeof(*blkcg), GFP_KERNEL); | 971 | blkcg = kzalloc(sizeof(*blkcg), GFP_KERNEL); |
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index b1472bc2d49c..ed897b5ef315 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -3741,8 +3741,10 @@ static void *cfq_init_queue(struct request_queue *q) | |||
3741 | * to make sure that cfq_put_cfqg() does not try to kfree root group | 3741 | * to make sure that cfq_put_cfqg() does not try to kfree root group |
3742 | */ | 3742 | */ |
3743 | atomic_set(&cfqg->ref, 1); | 3743 | atomic_set(&cfqg->ref, 1); |
3744 | rcu_read_lock(); | ||
3744 | blkiocg_add_blkio_group(&blkio_root_cgroup, &cfqg->blkg, (void *)cfqd, | 3745 | blkiocg_add_blkio_group(&blkio_root_cgroup, &cfqg->blkg, (void *)cfqd, |
3745 | 0); | 3746 | 0); |
3747 | rcu_read_unlock(); | ||
3746 | #endif | 3748 | #endif |
3747 | /* | 3749 | /* |
3748 | * Not strictly needed (since RB_ROOT just clears the node and we | 3750 | * Not strictly needed (since RB_ROOT just clears the node and we |