diff options
| author | Keith Busch <kbusch@kernel.org> | 2025-12-10 02:43:46 -0800 |
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2025-12-10 13:41:11 -0700 |
| commit | a0750fae73c55112ea11a4867bee40f11e679405 (patch) | |
| tree | 0e6fba88856f8dd7072578eee4c1cec664f903ad | |
| parent | f22ecf9c14c12918e30f2179ef516e99eb8b2e49 (diff) | |
blk-mq-dma: always initialize dma state
Ensure the dma state is initialized when we're not using the contiguous
iova, otherwise the caller may be using a stale state from a previous
request that could use the coalesed iova allocation.
Fixes: 2f6b2565d43cdb5 ("block: accumulate memory segment gaps per bio")
Reported-by: Sebastian Ott <sebott@redhat.com>
Tested-by: Sebastian Ott <sebott@redhat.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
| -rw-r--r-- | block/blk-mq-dma.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/block/blk-mq-dma.c b/block/blk-mq-dma.c index e9108ccaf4b0..6dc7a3c23ac8 100644 --- a/block/blk-mq-dma.c +++ b/block/blk-mq-dma.c @@ -199,6 +199,7 @@ static bool blk_dma_map_iter_start(struct request *req, struct device *dma_dev, if (blk_can_dma_map_iova(req, dma_dev) && dma_iova_try_alloc(dma_dev, state, vec.paddr, total_len)) return blk_rq_dma_map_iova(req, dma_dev, state, iter, &vec); + memset(state, 0, sizeof(*state)); return blk_dma_map_direct(req, dma_dev, iter, &vec); } |
