]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
nvmet-fc: do not check for invalid target port in nvmet_fc_handle_fcp_rqst()
authorHannes Reinecke <hare@suse.de>
Tue, 25 May 2021 12:54:14 +0000 (14:54 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Jul 2021 14:53:18 +0000 (16:53 +0200)
[ 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

index fc35f7ae67b0aee8d5255ad448cdb9d50dcf3c9e..9b07e8c7689abb0ac9d9309376c1877d31eb7743 100644 (file)
@@ -2151,13 +2151,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.
@@ -2185,7 +2178,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));