public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH infiniband-diags 1/6] ibtracert.c: fix resource leak
@ 2013-06-12 13:55 Hal Rosenstock
       [not found] ` <51B87DCE.4000708-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Hal Rosenstock @ 2013-06-12 13:55 UTC (permalink / raw)
  To: Ira Weiny
  Cc: linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org),
	Dan Ben-Yosef

From: Dan Ben Yosef <danby-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>

Call return without freeing the buffer.

Signed-off-by: Dan Ben Yosef <danby-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
Signed-off-by: Hal Rosenstock <hal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
---
 src/ibtracert.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/ibtracert.c b/src/ibtracert.c
index 5800e40..cc0ac98 100644
--- a/src/ibtracert.c
+++ b/src/ibtracert.c
@@ -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))))
-- 
1.7.8.2

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH infiniband-diags 1/6] ibtracert.c: fix resource leak
       [not found] ` <51B87DCE.4000708-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
@ 2013-06-12 20:54   ` Ira Weiny
       [not found]     ` <20130612135424.fa4df60d6837a528cea547dd-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Ira Weiny @ 2013-06-12 20:54 UTC (permalink / raw)
  To: Hal Rosenstock
  Cc: linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org),
	Dan Ben-Yosef

On Wed, 12 Jun 2013 09:55:26 -0400
Hal Rosenstock <hal-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org> wrote:

> From: Dan Ben Yosef <danby-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
> 
> Call return without freeing the buffer.
> 
> Signed-off-by: Dan Ben Yosef <danby-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
> Signed-off-by: Hal Rosenstock <hal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>

Thanks applied with modifications below.

> ---
>  src/ibtracert.c |   10 +++++++---
>  1 files changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/src/ibtracert.c b/src/ibtracert.c
> index 5800e40..cc0ac98 100644
> --- a/src/ibtracert.c
> +++ b/src/ibtracert.c
> @@ -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

> +					}
>  					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))))
> -- 
> 1.7.8.2
> 


-- 
Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH infiniband-diags 1/6] ibtracert.c: fix resource leak
       [not found]     ` <20130612135424.fa4df60d6837a528cea547dd-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2013-06-12 21:10       ` Hal Rosenstock
  0 siblings, 0 replies; 3+ messages in thread
From: Hal Rosenstock @ 2013-06-12 21:10 UTC (permalink / raw)
  To: Ira Weiny
  Cc: linux-rdma (linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org),
	Dan Ben-Yosef

On 6/12/2013 4:54 PM, Ira Weiny wrote:
> On Wed, 12 Jun 2013 09:55:26 -0400
> Hal Rosenstock <hal-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org> wrote:
> 
>> From: Dan Ben Yosef <danby-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
>>
>> Call return without freeing the buffer.
>>
>> Signed-off-by: Dan Ben Yosef <danby-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
>> Signed-off-by: Hal Rosenstock <hal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
> 
> Thanks applied with modifications below.
> 
>> ---
>>  src/ibtracert.c |   10 +++++++---
>>  1 files changed, 7 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/ibtracert.c b/src/ibtracert.c
>> index 5800e40..cc0ac98 100644
>> --- a/src/ibtracert.c
>> +++ b/src/ibtracert.c
>> @@ -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.

> 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

> Thanks,
> Ira
> 
>> +					}
>>  					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))))
>> -- 
>> 1.7.8.2
>>
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2013-06-12 21:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-12 13:55 [PATCH infiniband-diags 1/6] ibtracert.c: fix resource leak Hal Rosenstock
     [not found] ` <51B87DCE.4000708-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2013-06-12 20:54   ` Ira Weiny
     [not found]     ` <20130612135424.fa4df60d6837a528cea547dd-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-06-12 21:10       ` Hal Rosenstock

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