NVMe: Check for DMA mapping failure
If dma_map_sg returns 0 (failure), we need to fail the I/O. Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
This commit is contained in:
parent
d567760c40
commit
1974b1ae88
@ -451,7 +451,8 @@ static int nvme_submit_bio_queue(struct nvme_queue *nvmeq, struct nvme_ns *ns,
|
|||||||
dma_dir = DMA_FROM_DEVICE;
|
dma_dir = DMA_FROM_DEVICE;
|
||||||
}
|
}
|
||||||
|
|
||||||
nvme_map_bio(nvmeq->q_dmadev, nbio, bio, dma_dir, psegs);
|
if (nvme_map_bio(nvmeq->q_dmadev, nbio, bio, dma_dir, psegs) == 0)
|
||||||
|
goto mapping_failed;
|
||||||
|
|
||||||
cmnd->rw.flags = 1;
|
cmnd->rw.flags = 1;
|
||||||
cmnd->rw.command_id = cmdid;
|
cmnd->rw.command_id = cmdid;
|
||||||
@ -471,6 +472,11 @@ static int nvme_submit_bio_queue(struct nvme_queue *nvmeq, struct nvme_ns *ns,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
mapping_failed:
|
||||||
|
free_nbio(nvmeq, nbio);
|
||||||
|
bio_endio(bio, -ENOMEM);
|
||||||
|
return 0;
|
||||||
|
|
||||||
free_nbio:
|
free_nbio:
|
||||||
free_nbio(nvmeq, nbio);
|
free_nbio(nvmeq, nbio);
|
||||||
congestion:
|
congestion:
|
||||||
|
Loading…
Reference in New Issue
Block a user