NVMe: Initialize iod nents to 0
For commands that do not map a scatter list, we need to initilaize the iod's number of sg entries (nents) to 0 and not unmap in this case. Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
This commit is contained in:
parent
6ecec74520
commit
2b19603415
1 changed files with 3 additions and 1 deletions
|
@ -337,6 +337,7 @@ nvme_alloc_iod(unsigned nseg, unsigned nbytes, gfp_t gfp)
|
||||||
iod->offset = offsetof(struct nvme_iod, sg[nseg]);
|
iod->offset = offsetof(struct nvme_iod, sg[nseg]);
|
||||||
iod->npages = -1;
|
iod->npages = -1;
|
||||||
iod->length = nbytes;
|
iod->length = nbytes;
|
||||||
|
iod->nents = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return iod;
|
return iod;
|
||||||
|
@ -377,7 +378,8 @@ static void bio_completion(struct nvme_dev *dev, void *ctx,
|
||||||
struct bio *bio = iod->private;
|
struct bio *bio = iod->private;
|
||||||
u16 status = le16_to_cpup(&cqe->status) >> 1;
|
u16 status = le16_to_cpup(&cqe->status) >> 1;
|
||||||
|
|
||||||
dma_unmap_sg(&dev->pci_dev->dev, iod->sg, iod->nents,
|
if (iod->nents)
|
||||||
|
dma_unmap_sg(&dev->pci_dev->dev, iod->sg, iod->nents,
|
||||||
bio_data_dir(bio) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
|
bio_data_dir(bio) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
|
||||||
nvme_free_iod(dev, iod);
|
nvme_free_iod(dev, iod);
|
||||||
if (status) {
|
if (status) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue