ibtracert.c: fix resource leak
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
@@ -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
Ira Weiny
AppliedQuoted 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.
Signed-off-by Dan Ben Yosef <[email protected]>
Thanks applied with modifications below.
Quoted 9 lines
--- src/ibtracert.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-)src/ibtracert.c +0
-0
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
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.
Signed-off-by Dan Ben Yosef <[email protected]>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@@ -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,
IraQuoted 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
-0if (!(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