[SCSI] libfc: fix memory leakage in remote port
authorHillf Danton <dhillf@gmail.com>
Wed, 1 Dec 2010 00:19:04 +0000 (16:19 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Tue, 21 Dec 2010 18:24:24 +0000 (12:24 -0600)
There seems rdata should get put before return.

Signed-off-by: Hillf Danton <dhillf@gmail.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/libfc/fc_rport.c

index a84ef13ed74adf2a0e0d1dd81c644b2f3c9514a7..a7175adab32dd4278967a0a49e276ed09f8d6a1b 100644 (file)
@@ -652,7 +652,7 @@ void fc_rport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
        FC_RPORT_DBG(rdata, "Received a FLOGI %s\n", fc_els_resp_type(fp));
 
        if (fp == ERR_PTR(-FC_EX_CLOSED))
-               return;
+               goto put;
 
        mutex_lock(&rdata->rp_mutex);
 
@@ -689,6 +689,7 @@ out:
        fc_frame_free(fp);
 err:
        mutex_unlock(&rdata->rp_mutex);
+put:
        kref_put(&rdata->kref, rdata->local_port->tt.rport_destroy);
        return;
 bad: