Re: [PATCH 3/3] libfc: retry PRLI if we cannot analyse the payload

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 7 Oct 2018, 1:35am, Hannes Reinecke wrote:

> External Email
> 
> From: Hannes Reinecke <hare@xxxxxxxx>
> 
> When we fail to analyse the payload of a PRLI response we should
> reset the state machine to retry the PRLI; eventually we will be
> getting a proper frame.
> Not doing so will result in a stuck state machine and the port
> never to be presented to the systsm.
> 
> Suggested-by: Chad Dupuis <chad.dupuis@xxxxxxxxxx>
> Signed-off-by: Hannes Reinecke <hare@xxxxxxxx>
> ---
>  drivers/scsi/libfc/fc_rport.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c
> index e400783ebb87..1e1c0f1b9e69 100644
> --- a/drivers/scsi/libfc/fc_rport.c
> +++ b/drivers/scsi/libfc/fc_rport.c
> @@ -1161,8 +1161,10 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp,
>         op = fc_frame_payload_op(fp);
>         if (op == ELS_LS_ACC) {
>                 pp = fc_frame_payload_get(fp, sizeof(*pp));
> -               if (!pp)
> +               if (!pp) {
> +                       fc_rport_error_retry(rdata, -FC_EX_SEQ_ERR);
>                         goto out;
> +               }
> 
>                 resp_code = (pp->spp.spp_flags & FC_SPP_RESP_MASK);
>                 FC_RPORT_DBG(rdata, "PRLI spp_flags = 0x%x spp_type 0x%x\n",
> @@ -1175,8 +1177,10 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp,
>                                 fc_rport_error_retry(rdata, -FC_EX_SEQ_ERR);
>                         goto out;
>                 }
> -               if (pp->prli.prli_spp_len < sizeof(pp->spp))
> +               if (pp->prli.prli_spp_len < sizeof(pp->spp)) {
> +                       fc_rport_error_retry(rdata, -FC_EX_SEQ_ERR);
>                         goto out;
> +               }
> 
>                 fcp_parm = ntohl(pp->spp.spp_params);
>                 if (fcp_parm & FCP_SPPF_RETRY)
> --
> 2.16.4
> 

Looks good.

Reviewed-by: Arun Easi <arun.easi@xxxxxxxxxx>

Regards,
-Arun




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux