Commit b5fe5e95 authored by Yi Zou's avatar Yi Zou Committed by James Bottomley

[SCSI] libfc: fix fc_tm_done not freeing the allocated fsp pkt

Frame should be freed in fc_tm_done, this is an updated patch on the one
initially submitted by Hillf Danton.
Signed-off-by: default avatarHillf Danton <dhillf@gmail.com>
Signed-off-by: default avatarYi Zou <yi.zou@intel.com>
Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 3a91090f
...@@ -1321,27 +1321,27 @@ static void fc_tm_done(struct fc_seq *seq, struct fc_frame *fp, void *arg) ...@@ -1321,27 +1321,27 @@ static void fc_tm_done(struct fc_seq *seq, struct fc_frame *fp, void *arg)
* *
* scsi-eh will escalate for when either happens. * scsi-eh will escalate for when either happens.
*/ */
return; goto out;
} }
if (fc_fcp_lock_pkt(fsp)) if (fc_fcp_lock_pkt(fsp))
return; goto out;
/* /*
* raced with eh timeout handler. * raced with eh timeout handler.
*/ */
if (!fsp->seq_ptr || !fsp->wait_for_comp) { if (!fsp->seq_ptr || !fsp->wait_for_comp)
spin_unlock_bh(&fsp->scsi_pkt_lock); goto out_unlock;
return;
}
fh = fc_frame_header_get(fp); fh = fc_frame_header_get(fp);
if (fh->fh_type != FC_TYPE_BLS) if (fh->fh_type != FC_TYPE_BLS)
fc_fcp_resp(fsp, fp); fc_fcp_resp(fsp, fp);
fsp->seq_ptr = NULL; fsp->seq_ptr = NULL;
fsp->lp->tt.exch_done(seq); fsp->lp->tt.exch_done(seq);
fc_frame_free(fp); out_unlock:
fc_fcp_unlock_pkt(fsp); fc_fcp_unlock_pkt(fsp);
out:
fc_frame_free(fp);
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment