| From 96d9e4c175142cc3bc21ce0470ea280e4c8e7545 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 24 Jul 2024 13:31:14 +0300 |
| Subject: nvme-pci: add missing condition check for existence of mapped data |
| |
| From: Leon Romanovsky <leonro@nvidia.com> |
| |
| [ Upstream commit c31fad1470389666ac7169fe43aa65bf5b7e2cfd ] |
| |
| nvme_map_data() is called when request has physical segments, hence |
| the nvme_unmap_data() should have same condition to avoid dereference. |
| |
| Fixes: 4aedb705437f ("nvme-pci: split metadata handling from nvme_map_data / nvme_unmap_data") |
| Signed-off-by: Leon Romanovsky <leonro@nvidia.com> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Reviewed-by: Nitesh Shetty <nj.shetty@samsung.com> |
| Signed-off-by: Keith Busch <kbusch@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/nvme/host/pci.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c |
| index 9e9b05e79c474..5a93f021ca4f1 100644 |
| --- a/drivers/nvme/host/pci.c |
| +++ b/drivers/nvme/host/pci.c |
| @@ -863,7 +863,8 @@ static blk_status_t nvme_prep_rq(struct nvme_dev *dev, struct request *req) |
| nvme_start_request(req); |
| return BLK_STS_OK; |
| out_unmap_data: |
| - nvme_unmap_data(dev, req); |
| + if (blk_rq_nr_phys_segments(req)) |
| + nvme_unmap_data(dev, req); |
| out_free_cmd: |
| nvme_cleanup_cmd(req); |
| return ret; |
| -- |
| 2.43.0 |
| |