summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
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,
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.command_id = cmdid;
@@ -471,6 +472,11 @@ static int nvme_submit_bio_queue(struct nvme_queue *nvmeq, struct nvme_ns *ns,
return 0;
+ mapping_failed:
+ free_nbio(nvmeq, nbio);
+ bio_endio(bio, -ENOMEM);
+ return 0;
+
free_nbio:
free_nbio(nvmeq, nbio);
congestion:
OpenPOWER on IntegriCloud