ping On 2019/7/23 22:10, zhengbin wrote: > If blk_mq_init_allocated_queue->elevator_init_mq fails, need to release > the previously requested resources. > > Fixes: d34849913 ("blk-mq-sched: allow setting of default IO scheduler") > Signed-off-by: zhengbin <zhengbin13@xxxxxxxxxx> > --- > block/blk-mq.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/block/blk-mq.c b/block/blk-mq.c > index b038ec6..e001610 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c > @@ -2845,6 +2845,8 @@ static unsigned int nr_hw_queues(struct blk_mq_tag_set *set) > struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, > struct request_queue *q) > { > + int ret = -ENOMEM; > + > /* mark the queue as mq asap */ > q->mq_ops = set->ops; > > @@ -2906,17 +2908,18 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, > blk_mq_map_swqueue(q); > > if (!(set->flags & BLK_MQ_F_NO_SCHED)) { > - int ret; > - > ret = elevator_init_mq(q); > if (ret) > - return ERR_PTR(ret); > + goto err_tag_set; > } > > return q; > > +err_tag_set: > + blk_mq_del_queue_tag_set(q); > err_hctxs: > kfree(q->queue_hw_ctx); > + q->nr_hw_queues = 0; > err_sys_init: > blk_mq_sysfs_deinit(q); > err_poll: > -- > 2.7.4 > > > . >