aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
Diffstat (limited to 'block')
-rw-r--r--block/blk-cgroup.c8
-rw-r--r--block/cfq-iosched.c2
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)
956static struct cgroup_subsys_state * 956static struct cgroup_subsys_state *
957blkiocg_create(struct cgroup_subsys *subsys, struct cgroup *cgroup) 957blkiocg_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