提交 bbc435ef 编写于 作者: Y yu kuai 提交者: Yang Yingliang

nbd: use blk_mq_queue_tag_inflight_iter()

hulk inclusion
category: bugfix
bugzilla: 34280
CVE: NA

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

blk_mq_tagset_busy_iter() is not safe that it could get stale request
in tags->rqs[]. Use blk_mq_queue_tag_inflight_iter() here.
Signed-off-by: Nyu kuai <yukuai3@huawei.com>
Reviewed-by: NHou Tao <houtao1@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 eb14ba73
...@@ -746,7 +746,8 @@ static void recv_work(struct work_struct *work) ...@@ -746,7 +746,8 @@ static void recv_work(struct work_struct *work)
kfree(args); kfree(args);
} }
static void nbd_clear_req(struct request *req, void *data, bool reserved) static void nbd_clear_req(struct blk_mq_hw_ctx *hctx,
struct request *req, void *data, bool reserved)
{ {
struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req); struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req);
...@@ -760,7 +761,7 @@ static void nbd_clear_req(struct request *req, void *data, bool reserved) ...@@ -760,7 +761,7 @@ static void nbd_clear_req(struct request *req, void *data, bool reserved)
static void nbd_clear_que(struct nbd_device *nbd) static void nbd_clear_que(struct nbd_device *nbd)
{ {
blk_mq_quiesce_queue(nbd->disk->queue); blk_mq_quiesce_queue(nbd->disk->queue);
blk_mq_tagset_busy_iter(&nbd->tag_set, nbd_clear_req, NULL); blk_mq_queue_tag_inflight_iter(nbd->disk->queue, nbd_clear_req, NULL);
blk_mq_unquiesce_queue(nbd->disk->queue); blk_mq_unquiesce_queue(nbd->disk->queue);
dev_dbg(disk_to_dev(nbd->disk), "queue cleared\n"); dev_dbg(disk_to_dev(nbd->disk), "queue cleared\n");
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册