diff --git a/block/blk-mq.c b/block/blk-mq.c index 0392b014ac89d7776e781c42383405b80d56ffd0..e1253b18516bdafebabbbd0f5167538003cf604c 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -515,6 +515,10 @@ struct request *blk_mq_alloc_request_hctx(struct request_queue *q, return ERR_PTR(-EXDEV); } cpu = cpumask_first_and(alloc_data.hctx->cpumask, cpu_online_mask); + if (cpu >= nr_cpu_ids) { + blk_queue_exit(q); + return ERR_PTR(-EXDEV); + } alloc_data.ctx = __blk_mq_get_ctx(q, cpu); rq = blk_mq_get_request(q, NULL, op, &alloc_data);