Skip to contentSkip to conversation

ibtracert.c: fix resource leak

PATCH Applied Hal Rosenstock 2 participants 3 messages Jun 12, 2013 2 messages not in the archive InfiniBand

lore
Share & tools
lore
#0 lore raw

PATCH 1/6 ibtracert.c: fix resource leak

From: Dan Ben Yosef <[email protected]>

Call return without freeing the buffer.

---
 src/ibtracert.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)
src/ibtracert.c +7 -3
index 5800e40..cc0ac98 100644
@@ -567,13 +567,15 @@ static Node *find_mcpath(ib_portid_t * from, int mlid)
 					if (from->drpath.cnt > 0)
 						path->drpath.cnt--;
 				} else {
-					if (!(port = calloc(1, sizeof(Port))))
+					if (!(port = calloc(1, sizeof(Port)))) {
 						IBERROR("out of memory");
-
+						return 0;
+					}
 					if (get_port(port, i, path) < 0) {
 						IBWARN
 						    ("can't reach node %s port %d",
 						     portid2str(path), i);
+						free(port);
 						return 0;
 					}
 
@@ -585,8 +587,10 @@ static Node *find_mcpath(ib_portid_t * from, int mlid)
 					link_port(port, node);
 #endif
 
-					if (extend_dpath(&path->drpath, i) < 0)
+					if (extend_dpath(&path->drpath, i) < 0) {
+						free(port);
 						return 0;
+					}
 				}
 
 				if (!(remotenode = calloc(1, sizeof(Node))))
Signature · 6 lines
1.7.8.2

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): 51B87DCE.4000708-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org

Applied
#2 lore raw
Quoted 6 lines · On Wed, 12 Jun 2013 09:55:26 -0400 Hal Rosenstock…

From: Dan Ben Yosef <[email protected]>

Call return without freeing the buffer.

Thanks applied with modifications below.

Quoted 9 lines
---
 src/ibtracert.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)
src/ibtracert.c +0 -0
index 5800e40..cc0ac98 100644

src/ibtracert.c static Node *find_mcpath(ib_portid_t * from, int mlid) · line 572

Quoted 8 lines
src/ibtracert.c +2 -2
@@ -567,13 +567,15 @@ static Node *find_mcpath(ib_portid_t * from, int mlid)
 					if (from->drpath.cnt > 0)
 						path->drpath.cnt--;
 				} else {
-					if (!(port = calloc(1, sizeof(Port))))
+					if (!(port = calloc(1, sizeof(Port)))) {
 						IBERROR("out of memory");
-
+						return 0;

There is no need for this as IBERROR exits. Did you want to continue execution for some reason? If so you'll need to change IBERROR to IBWARN and resubmit this hunk as a separate patch.

Thanks,
Ira

Quoted 24 lines
src/ibtracert.c +5 -1
+					}
 					if (get_port(port, i, path) < 0) {
 						IBWARN
 						    ("can't reach node %s port %d",
 						     portid2str(path), i);
+						free(port);
 						return 0;
 					}
 
@@ -585,8 +587,10 @@ static Node *find_mcpath(ib_portid_t * from, int mlid)
 					link_port(port, node);
 #endif
 
-					if (extend_dpath(&path->drpath, i) < 0)
+					if (extend_dpath(&path->drpath, i) < 0) {
+						free(port);
 						return 0;
+					}
 				}
 
 				if (!(remotenode = calloc(1, sizeof(Node))))
Signature · 1 line
1.7.8.2
Signature · 5 lines
Ira Weiny <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): 20130612135424.fa4df60d6837a528cea547dd-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org

#4 lore raw
Quoted 16 lines · Ira Weiny
Quoted 6 lines · On Wed, 12 Jun 2013 09:55:26 -0400 Hal Rosenstock…

From: Dan Ben Yosef <[email protected]>

Call return without freeing the buffer.

Thanks applied with modifications below.

Quoted 4 lines
---
 src/ibtracert.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)
Quoted 15 lines

src/ibtracert.c static Node *find_mcpath(ib_portid_t * from, int mlid) · line 572

Quoted 13 lines
src/ibtracert.c +2 -2
index 5800e40..cc0ac98 100644
@@ -567,13 +567,15 @@ static Node *find_mcpath(ib_portid_t * from, int mlid)
 					if (from->drpath.cnt > 0)
 						path->drpath.cnt--;
 				} else {
-					if (!(port = calloc(1, sizeof(Port))))
+					if (!(port = calloc(1, sizeof(Port)))) {
 						IBERROR("out of memory");
-
+						return 0;

There is no need for this as IBERROR exits.

Agreed.

Quoted 1 line

Did you want to continue execution for some reason? If so you'll need to change IBERROR to IBWARN and resubmit this hunk as a separate patch.

I think it's consistent to the other memory failure handling without this hunk but Dan has the final word as to what he would like done.

Thanks.

-- Hal

Quoted 23 lines

Thanks,
Ira

Quoted 20 lines
src/ibtracert.c +5 -1
+					}
 					if (get_port(port, i, path) < 0) {
 						IBWARN
 						    ("can't reach node %s port %d",
 						     portid2str(path), i);
+						free(port);
 						return 0;
 					}
 
@@ -585,8 +587,10 @@ static Node *find_mcpath(ib_portid_t * from, int mlid)
 					link_port(port, node);
 #endif
 
-					if (extend_dpath(&path->drpath, i) < 0)
+					if (extend_dpath(&path->drpath, i) < 0) {
+						free(port);
 						return 0;
+					}
 				}
 
Quoted 6 lines
Quoted 4 lines
src/ibtracert.c +0 -0
 				if (!(remotenode = calloc(1, sizeof(Node))))
Signature · 1 line
1.7.8.2

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html