From: Thomas Abraham <[email protected]>

We should not assume the payload of a PRLI or PLOGI
respons is always present.

Signed-off-by: Thomas Abraham <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
---
 drivers/scsi/libfc/fc_rport.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c
index 372387a450df..e400783ebb87 100644
--- a/drivers/scsi/libfc/fc_rport.c
+++ b/drivers/scsi/libfc/fc_rport.c
@@ -1038,8 +1038,11 @@ static void fc_rport_plogi_resp(struct fc_seq *sp, 
struct fc_frame *fp,
                struct fc_els_ls_rjt *rjt;
 
                rjt = fc_frame_payload_get(fp, sizeof(*rjt));
-               FC_RPORT_DBG(rdata, "PLOGI ELS rejected, reason %x expl %x\n",
-                            rjt->er_reason, rjt->er_explan);
+               if (!rjt)
+                       FC_RPORT_DBG(rdata, "PLOGI bad response\n");
+               else
+                       FC_RPORT_DBG(rdata, "PLOGI ELS rejected, reason %x expl 
%x\n",
+                                    rjt->er_reason, rjt->er_explan);
                fc_rport_error_retry(rdata, -FC_EX_ELS_RJT);
        }
 out:
@@ -1211,8 +1214,11 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct 
fc_frame *fp,
 
        } else {
                rjt = fc_frame_payload_get(fp, sizeof(*rjt));
-               FC_RPORT_DBG(rdata, "PRLI ELS rejected, reason %x expl %x\n",
-                            rjt->er_reason, rjt->er_explan);
+               if (!rjt)
+                       FC_RPORT_DBG(rdata, "PRLI bad response\n");
+               else
+                       FC_RPORT_DBG(rdata, "PRLI ELS rejected, reason %x expl 
%x\n",
+                                    rjt->er_reason, rjt->er_explan);
                fc_rport_error_retry(rdata, FC_EX_ELS_RJT);
        }
 
-- 
2.16.4

Reply via email to