summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorMing Lei <ming.lei@redhat.com>2022-03-08 06:51:48 +0100
committerJens Axboe <axboe@kernel.dk>2022-03-09 03:39:59 +0100
commite02657ea7b86d1c41e095f49e4f7c7bb24bbee64 (patch)
tree5b5edca30535d1b34d9c79078c7ef6cf2710b997 /block
parentblk-mq: do not include passthrough requests in I/O accounting (diff)
downloadlinux-e02657ea7b86d1c41e095f49e4f7c7bb24bbee64.tar.xz
linux-e02657ea7b86d1c41e095f49e4f7c7bb24bbee64.zip
blk-mq: handle already freed tags gracefully in blk_mq_free_rqs
To simplify further changes allow for double calling blk_mq_free_rqs on a queue. Signed-off-by: Ming Lei <ming.lei@redhat.com> [hch: split out from a larger patch] Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Link: https://lore.kernel.org/r/20220308055200.735835-3-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block')
-rw-r--r--block/blk-mq.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 40f634ab7026..f7ef8e2ab935 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -3071,6 +3071,9 @@ void blk_mq_free_rqs(struct blk_mq_tag_set *set, struct blk_mq_tags *tags,
struct blk_mq_tags *drv_tags;
struct page *page;
+ if (list_empty(&tags->page_list))
+ return;
+
if (blk_mq_is_shared_tags(set->flags))
drv_tags = set->shared_tags;
else