diff options
| -rw-r--r-- | drivers/target/tcm_fc/tfc_sess.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/target/tcm_fc/tfc_sess.c b/drivers/target/tcm_fc/tfc_sess.c index 59f2b467f9f7..6659dd36e806 100644 --- a/drivers/target/tcm_fc/tfc_sess.c +++ b/drivers/target/tcm_fc/tfc_sess.c | |||
| @@ -355,11 +355,11 @@ static int ft_prli_locked(struct fc_rport_priv *rdata, u32 spp_len, | |||
| 355 | 355 | ||
| 356 | tport = ft_tport_create(rdata->local_port); | 356 | tport = ft_tport_create(rdata->local_port); |
| 357 | if (!tport) | 357 | if (!tport) |
| 358 | return 0; /* not a target for this local port */ | 358 | goto not_target; /* not a target for this local port */ |
| 359 | 359 | ||
| 360 | acl = ft_acl_get(tport->tpg, rdata); | 360 | acl = ft_acl_get(tport->tpg, rdata); |
| 361 | if (!acl) | 361 | if (!acl) |
| 362 | return 0; | 362 | goto not_target; /* no target for this remote */ |
| 363 | 363 | ||
| 364 | if (!rspp) | 364 | if (!rspp) |
| 365 | goto fill; | 365 | goto fill; |
| @@ -402,6 +402,12 @@ fill: | |||
| 402 | fcp_parm &= ~FCP_SPPF_RETRY; | 402 | fcp_parm &= ~FCP_SPPF_RETRY; |
| 403 | spp->spp_params = htonl(fcp_parm | FCP_SPPF_TARG_FCN); | 403 | spp->spp_params = htonl(fcp_parm | FCP_SPPF_TARG_FCN); |
| 404 | return FC_SPP_RESP_ACK; | 404 | return FC_SPP_RESP_ACK; |
| 405 | |||
| 406 | not_target: | ||
| 407 | fcp_parm = ntohl(spp->spp_params); | ||
| 408 | fcp_parm &= ~FCP_SPPF_TARG_FCN; | ||
| 409 | spp->spp_params = htonl(fcp_parm); | ||
| 410 | return 0; | ||
| 405 | } | 411 | } |
| 406 | 412 | ||
| 407 | /** | 413 | /** |
