]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: libfc: check fc_frame_payload_get() return value for null
authorThomas Abraham <tabraham@suse.com>
Sun, 7 Oct 2018 08:35:36 +0000 (10:35 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 16 Oct 2018 03:53:36 +0000 (23:53 -0400)
We should not assume the payload of a PRLI or PLOGI respons is always
present.

Signed-off-by: Thomas Abraham <tabraham@suse.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Arun Easi <arun.easi@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/libfc/fc_rport.c

index 372387a450dff7d64147a4baa8cdcfaaa1d43c28..e400783ebb87ed737e87d814d6c061c553920d15 100644 (file)
@@ -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);
        }