| From a94a8d5db3d25f738cb31c86c1bc17ae88b30cc5 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 25 May 2021 14:54:14 +0200 |
| Subject: nvmet-fc: do not check for invalid target port in |
| nvmet_fc_handle_fcp_rqst() |
| |
| From: Hannes Reinecke <hare@suse.de> |
| |
| [ Upstream commit 2a4a910aa4f0acc428dc8d10227c42e14ed21d10 ] |
| |
| When parsing a request in nvmet_fc_handle_fcp_rqst() we should not |
| check for invalid target ports; if we do the command is aborted |
| from the fcp layer, causing the host to assume a transport error. |
| Rather we should still forward this request to the nvmet layer, which |
| will then correctly fail the command with an appropriate error status. |
| |
| Signed-off-by: Hannes Reinecke <hare@suse.de> |
| Reviewed-by: James Smart <jsmart2021@gmail.com> |
| Signed-off-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/nvme/target/fc.c | 10 ++-------- |
| 1 file changed, 2 insertions(+), 8 deletions(-) |
| |
| diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c |
| index cd4e73aa9807..640031cbda7c 100644 |
| --- a/drivers/nvme/target/fc.c |
| +++ b/drivers/nvme/target/fc.c |
| @@ -2499,13 +2499,6 @@ nvmet_fc_handle_fcp_rqst(struct nvmet_fc_tgtport *tgtport, |
| u32 xfrlen = be32_to_cpu(cmdiu->data_len); |
| int ret; |
| |
| - /* |
| - * if there is no nvmet mapping to the targetport there |
| - * shouldn't be requests. just terminate them. |
| - */ |
| - if (!tgtport->pe) |
| - goto transport_error; |
| - |
| /* |
| * Fused commands are currently not supported in the linux |
| * implementation. |
| @@ -2533,7 +2526,8 @@ nvmet_fc_handle_fcp_rqst(struct nvmet_fc_tgtport *tgtport, |
| |
| fod->req.cmd = &fod->cmdiubuf.sqe; |
| fod->req.cqe = &fod->rspiubuf.cqe; |
| - fod->req.port = tgtport->pe->port; |
| + if (tgtport->pe) |
| + fod->req.port = tgtport->pe->port; |
| |
| /* clear any response payload */ |
| memset(&fod->rspiubuf, 0, sizeof(fod->rspiubuf)); |
| -- |
| 2.30.2 |
| |