aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMatthew Wilcox <matthew.r.wilcox@intel.com>2011-02-10 12:01:09 -0500
committerMatthew Wilcox <matthew.r.wilcox@intel.com>2011-11-04 15:52:57 -0400
commit1974b1ae8852324a75fb8cfecbc7b758fd5a2c3c (patch)
treeef469e03be53c3334d6cfd93d92f11b06c025538 /drivers
parentd567760c409f981d35fc755b51d5bf56a99a467b (diff)
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/nvme.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/block/nvme.c b/drivers/block/nvme.c
index 2948043483fe..bfdca3a3a41a 100644
--- a/drivers/block/nvme.c
+++ b/drivers/block/nvme.c
@@ -451,7 +451,8 @@ static int nvme_submit_bio_queue(struct nvme_queue *nvmeq, struct nvme_ns *ns,
451 dma_dir = DMA_FROM_DEVICE; 451 dma_dir = DMA_FROM_DEVICE;
452 } 452 }
453 453
454 nvme_map_bio(nvmeq->q_dmadev, nbio, bio, dma_dir, psegs); 454 if (nvme_map_bio(nvmeq->q_dmadev, nbio, bio, dma_dir, psegs) == 0)
455 goto mapping_failed;
455 456
456 cmnd->rw.flags = 1; 457 cmnd->rw.flags = 1;
457 cmnd->rw.command_id = cmdid; 458 cmnd->rw.command_id = cmdid;
@@ -471,6 +472,11 @@ static int nvme_submit_bio_queue(struct nvme_queue *nvmeq, struct nvme_ns *ns,
471 472
472 return 0; 473 return 0;
473 474
475 mapping_failed:
476 free_nbio(nvmeq, nbio);
477 bio_endio(bio, -ENOMEM);
478 return 0;
479
474 free_nbio: 480 free_nbio:
475 free_nbio(nvmeq, nbio); 481 free_nbio(nvmeq, nbio);
476 congestion: 482 congestion: