> On Thu, Oct 28, 2010 at 9:55 AM, Mike Christie <michaelc@xxxxxxxxxxx> > wrote: > > On 10/27/2010 08:24 PM, Robert Love wrote: > >> > >> On Mon, 2010-10-25 at 20:37 +0800, Hillf Danton wrote: > >>> > >>> There seems frame should get freed against memory leakage. > >>> > >>> Signed-off-by: Hillf Danton<dhillf@xxxxxxxxx> > >>> --- > >>> > >>> --- a/drivers/scsi/libfc/fc_fcp.c    2010-09-13 07:07:38.000000000 > >>> +0800 > >>> +++ b/drivers/scsi/libfc/fc_fcp.c    2010-10-25 20:31:04.000000000 > >>> +0800 > >>> @@ -1294,6 +1294,7 @@ static void fc_tm_done(struct fc_seq *se > >>>     */ > >>>    Âif (!fsp->seq_ptr || !fsp->wait_for_comp) { > >>>        Âspin_unlock_bh(&fsp->scsi_pkt_lock); > >> > >> I wonder if this should be a fc_fcp_unlock_pkt(fsp) since we get the > >> lock with the fc_fcp_lock_pkt(fsp) call above. > >> > According to one question a patch, two were delivered, please check them. > > Here I want frame get freed. //Hillf > > > > > Did I do that. I think you are right. Not sure what happened if it was > me. > > I would think fc_frame_free() be called on all the if () { ..return } cases, the caller won't do that from fc_exch_recv(), also, frame should be freed after unlock the fsp: { if (IS_ERR(fp)) goto out; if (fc_fcp_lock_pkt(fsp)) goto out; if (!fsp->seq_ptr || !fsp->wait_for_comp) goto out_unlock; ... out_unlock: fc_fcp_unlock_pkt(fsp); out: fc_frame_free(fp); } yi ÿô.nÇ·®+%˱é¥wÿº{.nÇ·¥{±þÇø¡Ü}©²ÆzÚj:+v¨þø®w¥þàÞ¨è&¢)ß«a¶Úÿûz¹ÞúÝjÿwèf