In case of error blkg in blkg_conf_prep, we should unlock queue->queue_lock first and then rcu, just like blkg_conf_finish. Signed-off-by: Joseph Qi <jiangqi903@xxxxxxxxx> block/blk-cgroup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index bbe7ee0..cc017b2 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -823,8 +823,8 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol, if (IS_ERR(blkg)) { ret = PTR_ERR(blkg); - rcu_read_unlock(); spin_unlock_irq(disk->queue->queue_lock); + rcu_read_unlock(); owner = disk->fops->owner; put_disk(disk); module_put(owner); -- 1.9.4 -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html