scsi: libfc: free skb when receiving invalid flogi resp
The issue to be fixed in this commit is when libfc found it received a invalid FLOGI response from FC switch, it would return without freeing the fc frame, which is just the skb data. This would cause memory leak if FC switch keeps sending invalid FLOGI responses. This fix is just to make it execute `fc_frame_free(fp)` before returning from function `fc_lport_flogi_resp`. Signed-off-by: Ming Lu <ming.lu@citrix.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
b63195698d
commit
5d8fc4a9f0
|
@ -1726,14 +1726,14 @@ void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
|
|||
fc_frame_payload_op(fp) != ELS_LS_ACC) {
|
||||
FC_LPORT_DBG(lport, "FLOGI not accepted or bad response\n");
|
||||
fc_lport_error(lport, fp);
|
||||
goto err;
|
||||
goto out;
|
||||
}
|
||||
|
||||
flp = fc_frame_payload_get(fp, sizeof(*flp));
|
||||
if (!flp) {
|
||||
FC_LPORT_DBG(lport, "FLOGI bad response\n");
|
||||
fc_lport_error(lport, fp);
|
||||
goto err;
|
||||
goto out;
|
||||
}
|
||||
|
||||
mfs = ntohs(flp->fl_csp.sp_bb_data) &
|
||||
|
@ -1743,7 +1743,7 @@ void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
|
|||
FC_LPORT_DBG(lport, "FLOGI bad mfs:%hu response, "
|
||||
"lport->mfs:%hu\n", mfs, lport->mfs);
|
||||
fc_lport_error(lport, fp);
|
||||
goto err;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (mfs <= lport->mfs) {
|
||||
|
|
Loading…
Reference in New Issue