public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] libfc: fix mem leak in fc_seq_assign()
@ 2010-10-19 14:17 Hillf Danton
  2010-10-19 15:08 ` Zou, Yi
  2010-10-19 17:29 ` Joe Eykholt
  0 siblings, 2 replies; 5+ messages in thread
From: Hillf Danton @ 2010-10-19 14:17 UTC (permalink / raw)
  To: devel; +Cc: linux-scsi

There seems exchs should get released in cases that FC_RJT_NONE is
returned, or they will no longer get freed.

It also looks a typo like the following,

-		    fc_seq_lookup_recip(lport, ema->mp, fp) != FC_RJT_NONE)
+		    fc_seq_lookup_recip(lport, ema->mp, fp) == FC_RJT_NONE)

but I am not sure.

Signed-off-by: Hillf Danton <dhillf@gmail.com>
---

--- a/drivers/scsi/libfc/fc_exch.c	2010-09-13 07:07:38.000000000 +0800
+++ b/drivers/scsi/libfc/fc_exch.c	2010-10-19 21:48:22.000000000 +0800
@@ -3,6 +3,9 @@
  * Copyright(c) 2008 Red Hat, Inc.  All rights reserved.
  * Copyright(c) 2008 Mike Christie
  *
+ * Copyright(c) Oct 19, 2010	Hillf Danton
+ *				minor fix of memory leakage
+ *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms and conditions of the GNU General Public License,
  * version 2, as published by the Free Software Foundation.
@@ -1246,9 +1249,16 @@ static struct fc_seq *fc_seq_assign(stru
 	fr_seq(fp) = NULL;

 	list_for_each_entry(ema, &lport->ema_list, ema_list)
-		if ((!ema->match || ema->match(fp)) &&
-		    fc_seq_lookup_recip(lport, ema->mp, fp) != FC_RJT_NONE)
-			break;
+		if (! ema->match || ema->match(fp))
+			if (fc_seq_lookup_recip(lport, ema->mp, fp) !=
+				FC_RJT_NONE)
+				break;
+			else {
+				struct fc_seq *seq = fr_seq(fp);
+				struct fc_exch *exch = fc_seq_exch(seq);
+				fc_exch_release(exch);
+			}
+
 	return fr_seq(fp);
 }

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-10-23  6:58 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-19 14:17 [PATCH] libfc: fix mem leak in fc_seq_assign() Hillf Danton
2010-10-19 15:08 ` Zou, Yi
2010-10-19 17:29 ` Joe Eykholt
2010-10-20 14:40   ` Hillf Danton
2010-10-23  6:58   ` Hillf Danton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox