projects
/
linux-block.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d567760
)
NVMe: Check for DMA mapping failure
author
Matthew Wilcox
<matthew.r.wilcox@intel.com>
Thu, 10 Feb 2011 17:01:09 +0000
(12:01 -0500)
committer
Matthew Wilcox
<matthew.r.wilcox@intel.com>
Fri, 4 Nov 2011 19:52:57 +0000
(15:52 -0400)
If dma_map_sg returns 0 (failure), we need to fail the I/O.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
drivers/block/nvme.c
patch
|
blob
|
blame
|
history
diff --git
a/drivers/block/nvme.c
b/drivers/block/nvme.c
index 2948043483fe635667db7488f56842dc0659e3b2..bfdca3a3a41a11927b9b511704fd885aa5751b9a 100644
(file)
--- 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: