[ofa-general] [PATCH 2/3] opensm/libvendor: fix umad_port leak

Sasha Khapyorsky sashak at voltaire.com
Thu Nov 15 01:03:03 PST 2007


Fix memory leaks - release and invalidate allocated umad port resources.

Signed-off-by: Sasha Khapyorsky <sashak at voltaire.com>
---
 opensm/libvendor/osm_vendor_ibumad.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/opensm/libvendor/osm_vendor_ibumad.c b/opensm/libvendor/osm_vendor_ibumad.c
index 9e186d5..5668c5e 100644
--- a/opensm/libvendor/osm_vendor_ibumad.c
+++ b/opensm/libvendor/osm_vendor_ibumad.c
@@ -725,6 +725,8 @@ osm_vendor_open_port(IN osm_vendor_t * const p_vend,
 			"osm_vendor_open_port: ERR 5423: "
 			"Unable to alloc receiver struct\n");
 		umad_close_port(umad_port_id);
+		umad_release_port(&p_vend->umad_port);
+		p_vend->umad_port.port_guid = 0;
 		p_vend->umad_port_id = umad_port_id = -1;
 		goto Exit;
 	}
@@ -733,6 +735,8 @@ osm_vendor_open_port(IN osm_vendor_t * const p_vend,
 			"osm_vendor_open_port: ERR 5420: "
 			"umad_receiver_init failed\n");
 		umad_close_port(umad_port_id);
+		umad_release_port(&p_vend->umad_port);
+		p_vend->umad_port.port_guid = 0;
 		p_vend->umad_port_id = umad_port_id = -1;
 	}
 
@@ -758,6 +762,8 @@ static void osm_vendor_close_port(osm_vendor_t * const p_vend)
 			if (p_vend->agents[i])
 				umad_unregister(p_vend->umad_port_id, i);
 		umad_close_port(p_vend->umad_port_id);
+		umad_release_port(&p_vend->umad_port);
+		p_vend->umad_port.port_guid = 0;
 		p_vend->umad_port_id = -1;
 	}
 }
-- 
1.5.3.rc2.29.gc4640f




More information about the general mailing list