When a queue is dying or dead there is no point in calling blk_mq_run_hw_queues() in blk_mq_unquiesce_queue(); in fact, doing so might crash the machine as the queue structures are in the process of being deleted. Signed-off-by: Hannes Reinecke <hare@xxxxxxxx> --- block/blk-mq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/block/blk-mq.c b/block/blk-mq.c index a9c181603cbd..b1eeba38bc79 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -258,7 +258,8 @@ void blk_mq_unquiesce_queue(struct request_queue *q) blk_queue_flag_clear(QUEUE_FLAG_QUIESCED, q); /* dispatch requests which are inserted during quiescing */ - blk_mq_run_hw_queues(q, true); + if (!blk_queue_dying(q) && !blk_queue_dead(q)) + blk_mq_run_hw_queues(q, true); } EXPORT_SYMBOL_GPL(blk_mq_unquiesce_queue); -- 2.16.4