提交 ab774358 编写于 作者: L Laibin Qiu

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

hulk inclusion
category: bugfix
bugzilla: 186352, https://gitee.com/openeuler/kernel/issues/I4YADX
DTS: DTS2022031707143
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: NLaibin Qiu <qiulaibin@huawei.com>
Reviewed-by: NHou Tao <houtao1@huawei.com>
上级 1518b80b
......@@ -2459,12 +2459,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:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册