blk-cgroup: hold queue_lock when removing blkg->q_node
[sfrench/cifs-2.6.git] / block / blk-cgroup.c
index fc49be622e05b159e3a3a5fb5f717383cd325c93..9faafcd10e1775dd124a2b15e653e46ac2790847 100644 (file)
@@ -136,7 +136,9 @@ static void blkg_free_workfn(struct work_struct *work)
                        blkcg_policy[i]->pd_free_fn(blkg->pd[i]);
        if (blkg->parent)
                blkg_put(blkg->parent);
+       spin_lock_irq(&q->queue_lock);
        list_del_init(&blkg->q_node);
+       spin_unlock_irq(&q->queue_lock);
        mutex_unlock(&q->blkcg_mutex);
 
        blk_put_queue(q);