Skip to content

Commit bbf0481

Browse files
roygergregkh
authored andcommitted
nvme-pci: DMA unmap the correct regions in nvme_free_sgls
commit a54afbc upstream. The call to nvme_free_sgls() in nvme_unmap_data() has the sg_list and sge parameters swapped. This wasn't noticed by the compiler because both share the same type. On a Xen PV hardware domain, and possibly any other architectures that takes that path, this leads to corruption of the NVMe contents. Fixes: f0887e2 ("nvme-pci: create common sgl unmapping helper") Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Signed-off-by: Keith Busch <kbusch@kernel.org> [nb: drop the attrs parameter added in 6.19 by commit 61d43b1 ("nvme-pci: migrate to dma_map_phys instead of map_page"), which is not in 6.18.y] Signed-off-by: Nicolai Buchwitz <nb@tipi-net.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 40e44ef commit bbf0481

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/nvme/host/pci.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -761,8 +761,8 @@ static void nvme_unmap_data(struct request *req)
761761

762762
if (!blk_rq_dma_unmap(req, dma_dev, &iod->dma_state, iod->total_len)) {
763763
if (nvme_pci_cmd_use_sgl(&iod->cmd))
764-
nvme_free_sgls(req, iod->descriptors[0],
765-
&iod->cmd.common.dptr.sgl);
764+
nvme_free_sgls(req, &iod->cmd.common.dptr.sgl,
765+
iod->descriptors[0]);
766766
else
767767
nvme_free_prps(req);
768768
}

0 commit comments

Comments
 (0)