aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorHillf Danton <dhillf@gmail.com>2010-11-30 19:19:04 -0500
committerJames Bottomley <James.Bottomley@suse.de>2010-12-21 13:24:24 -0500
commit0e9e3d3b155c35d5750805c2b8bb6d5b6e6a3bfb (patch)
treec47b35dee5b002531d40a9f5126e343906f4bdfe /drivers/scsi
parent72e0daad555bc0ca2e7abd68593087d098d866a8 (diff)
[SCSI] libfc: fix memory leakage in remote port
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>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/libfc/fc_rport.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c
index a84ef13ed74..a7175adab32 100644
--- a/drivers/scsi/libfc/fc_rport.c
+++ b/drivers/scsi/libfc/fc_rport.c
@@ -652,7 +652,7 @@ void fc_rport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
652 FC_RPORT_DBG(rdata, "Received a FLOGI %s\n", fc_els_resp_type(fp)); 652 FC_RPORT_DBG(rdata, "Received a FLOGI %s\n", fc_els_resp_type(fp));
653 653
654 if (fp == ERR_PTR(-FC_EX_CLOSED)) 654 if (fp == ERR_PTR(-FC_EX_CLOSED))
655 return; 655 goto put;
656 656
657 mutex_lock(&rdata->rp_mutex); 657 mutex_lock(&rdata->rp_mutex);
658 658
@@ -689,6 +689,7 @@ out:
689 fc_frame_free(fp); 689 fc_frame_free(fp);
690err: 690err:
691 mutex_unlock(&rdata->rp_mutex); 691 mutex_unlock(&rdata->rp_mutex);
692put:
692 kref_put(&rdata->kref, rdata->local_port->tt.rport_destroy); 693 kref_put(&rdata->kref, rdata->local_port->tt.rport_destroy);
693 return; 694 return;
694bad: 695bad: