Skip to content

Commit aad1271

Browse files
tabrahammartinkpetersen
authored andcommitted
scsi: libfc: check fc_frame_payload_get() return value for null
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>
1 parent a33e5bf commit aad1271

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

drivers/scsi/libfc/fc_rport.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,8 +1038,11 @@ static void fc_rport_plogi_resp(struct fc_seq *sp, struct fc_frame *fp,
10381038
struct fc_els_ls_rjt *rjt;
10391039

10401040
rjt = fc_frame_payload_get(fp, sizeof(*rjt));
1041-
FC_RPORT_DBG(rdata, "PLOGI ELS rejected, reason %x expl %x\n",
1042-
rjt->er_reason, rjt->er_explan);
1041+
if (!rjt)
1042+
FC_RPORT_DBG(rdata, "PLOGI bad response\n");
1043+
else
1044+
FC_RPORT_DBG(rdata, "PLOGI ELS rejected, reason %x expl %x\n",
1045+
rjt->er_reason, rjt->er_explan);
10431046
fc_rport_error_retry(rdata, -FC_EX_ELS_RJT);
10441047
}
10451048
out:
@@ -1211,8 +1214,11 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp,
12111214

12121215
} else {
12131216
rjt = fc_frame_payload_get(fp, sizeof(*rjt));
1214-
FC_RPORT_DBG(rdata, "PRLI ELS rejected, reason %x expl %x\n",
1215-
rjt->er_reason, rjt->er_explan);
1217+
if (!rjt)
1218+
FC_RPORT_DBG(rdata, "PRLI bad response\n");
1219+
else
1220+
FC_RPORT_DBG(rdata, "PRLI ELS rejected, reason %x expl %x\n",
1221+
rjt->er_reason, rjt->er_explan);
12161222
fc_rport_error_retry(rdata, FC_EX_ELS_RJT);
12171223
}
12181224

0 commit comments

Comments
 (0)