Commit 8653cd5e authored by Laibin Qiu's avatar Laibin Qiu Committed by Zheng Zengkai
Browse files

blk-mq: add exception handling when srcu->sda alloc failed

hulk inclusion
category: bugfix
bugzilla: 186352, https://gitee.com/openeuler/kernel/issues/I4YADX


CVE: NA

--------------------------------

In case of BLK_MQ_F_BLOCKING, per-hctx srcu is used to protect dispatch
critical area. But the current process is not aware when memory of srcu
allocation failed in blk_mq_alloc_hctx, which will leads to illegal
address BUG. Add return value validation to avoid this problem.

Signed-off-by: default avatarLaibin Qiu <qiulaibin@huawei.com>
Reviewed-by: default avatarHou Tao <houtao1@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 78774718
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -2852,12 +2852,16 @@ blk_mq_alloc_hctx(struct request_queue *q, struct blk_mq_tag_set *set,
	if (!hctx->fq)
		goto free_bitmap;

	if (hctx->flags & BLK_MQ_F_BLOCKING)
		init_srcu_struct(hctx->srcu);
	if (hctx->flags & BLK_MQ_F_BLOCKING) {
		if (init_srcu_struct(hctx->srcu) != 0)
			goto free_flush_queue;
	}
	blk_mq_hctx_kobj_init(hctx);

	return hctx;

 free_flush_queue:
	blk_free_flush_queue(hctx->fq);
 free_bitmap:
	sbitmap_free(&hctx->ctx_map);
 free_ctxs: