]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
[SCSI] libfc: Fixing a memory leak when destroying an interface
authorParikh, Neerav <neerav.parikh@intel.com>
Fri, 25 Feb 2011 23:02:51 +0000 (15:02 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Tue, 1 Mar 2011 00:28:45 +0000 (18:28 -0600)
When an fcoe interface is being destroyed; in the process the
fcoe driver will try to release all the resources it had allocated
for that interface including rports. But, it seems that it does not
release the reference held for the name server rport in that process
resulting into a memory leak. This patch fixes that memory leak.

Signed-off-by: Neerav Parikh <neerav.parikh@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.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 59b16bbb66a3b1f87cf72f3b5eefee4796a022dd..49e1ccca09d5ba285f18c09e7c42a3e008fa2828 100644 (file)
@@ -357,6 +357,7 @@ static void fc_rport_work(struct work_struct *work)
                        if (port_id == FC_FID_DIR_SERV) {
                                rdata->event = RPORT_EV_NONE;
                                mutex_unlock(&rdata->rp_mutex);
+                               kref_put(&rdata->kref, lport->tt.rport_destroy);
                        } else if ((rdata->flags & FC_RP_STARTED) &&
                                   rdata->major_retries <
                                   lport->max_rport_retry_count) {