nvmet-fc: abort command when there is no binding

[ Upstream commit 3146345c2e9c2f661527054e402b0cfad80105a4 ]

When the target port has not active port binding, there is no point in
trying to process the command as it has to fail anyway. Instead adding
checks to all commands abort the command early.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Daniel Wagner 2024-01-31 09:51:09 +01:00 committed by Ksawlii
parent a5e59f7e79
commit 6fcbc0f326

View file

@ -1102,6 +1102,9 @@ nvmet_fc_alloc_target_assoc(struct nvmet_fc_tgtport *tgtport, void *hosthandle)
int idx; int idx;
bool needrandom = true; bool needrandom = true;
if (!tgtport->pe)
return NULL;
assoc = kzalloc(sizeof(*assoc), GFP_KERNEL); assoc = kzalloc(sizeof(*assoc), GFP_KERNEL);
if (!assoc) if (!assoc)
return NULL; return NULL;
@ -2529,8 +2532,9 @@ nvmet_fc_handle_fcp_rqst(struct nvmet_fc_tgtport *tgtport,
fod->req.cmd = &fod->cmdiubuf.sqe; fod->req.cmd = &fod->cmdiubuf.sqe;
fod->req.cqe = &fod->rspiubuf.cqe; fod->req.cqe = &fod->rspiubuf.cqe;
if (tgtport->pe) if (!tgtport->pe)
fod->req.port = tgtport->pe->port; goto transport_error;
fod->req.port = tgtport->pe->port;
/* clear any response payload */ /* clear any response payload */
memset(&fod->rspiubuf, 0, sizeof(fod->rspiubuf)); memset(&fod->rspiubuf, 0, sizeof(fod->rspiubuf));