diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index c30661ddc873..c8cc1cbb6370 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -359,9 +359,11 @@ struct blkcg_gq *blkg_lookup_create(struct blkcg *blkcg, struct blkcg_gq *blkg = blkg_lookup(blkcg, q); if (unlikely(!blkg)) { - spin_lock_irq(&q->queue_lock); + unsigned long flags; + + spin_lock_irqsave(&q->queue_lock, flags); blkg = __blkg_lookup_create(blkcg, q); - spin_unlock_irq(&q->queue_lock); + spin_unlock_irqrestore(&q->queue_lock, flags); } return blkg;