[PATCH] DMA mapping leak in error path in __nvme_fc_init_requet()
wenxiong at linux.ibm.com
wenxiong at linux.ibm.com
Tue Aug 11 16:44:51 PDT 2026
From: Wen Xiong <wenxiong at linux.ibm.com>
In __nvme_fc_init_request(), if the first DMA mapping for cmddma succeeds
but the second DMA mapping for rspdma fails, the function returns an error
without unmapping the first successful DMA mapping. This causes a DMA
resource leak.
Fix this by unmapping cmddma before returning the error when rspdma
mapping fails.
Signed-off-by: Wen Xiong <wenxiong at linux.ibm.com>
---
drivers/nvme/host/fc.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index 68a5d971657b..7684fb053963 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -2129,6 +2129,8 @@ __nvme_fc_init_request(struct nvme_fc_ctrl *ctrl,
if (fc_dma_mapping_error(ctrl->lport->dev, op->fcp_req.rspdma)) {
dev_err(ctrl->dev,
"FCP Op failed - rspiu dma mapping failed.\n");
+ fc_dma_unmap_single(ctrl->lport->dev, op->fcp_req.cmddma,
+ sizeof(op->cmd_iu), DMA_TO_DEVICE);
ret = -EFAULT;
}
--
2.52.0
More information about the Linux-nvme
mailing list