linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 3/5] perf kvm: Fill in the missing freeing a session after an error occur
@ 2015-06-30 15:18 Taeung Song
  2015-06-30 15:18 ` [PATCH v2 4/5] perf mem: " Taeung Song
  2015-07-03  7:49 ` [tip:perf/urgent] perf kvm: Fill in the missing session freeing after an error occurs tip-bot for Taeung Song
  0 siblings, 2 replies; 6+ messages in thread
From: Taeung Song @ 2015-06-30 15:18 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, jolsa, namhyung, Ingo Molnar, Taeung Song

When an error occur a error value is just returned
without freeing the session. So allocating and freeing
session have to be matched as a pair even if an error occur.

Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
---
 tools/perf/builtin-kvm.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
index 74878cd..fc1cffb 100644
--- a/tools/perf/builtin-kvm.c
+++ b/tools/perf/builtin-kvm.c
@@ -1061,8 +1061,10 @@ static int read_events(struct perf_kvm_stat *kvm)
 
 	symbol__init(&kvm->session->header.env);
 
-	if (!perf_session__has_traces(kvm->session, "kvm record"))
-		return -EINVAL;
+	if (!perf_session__has_traces(kvm->session, "kvm record")) {
+		ret = -EINVAL;
+		goto out_delete;
+	}
 
 	/*
 	 * Do not use 'isa' recorded in kvm_exit tracepoint since it is not
@@ -1070,9 +1072,13 @@ static int read_events(struct perf_kvm_stat *kvm)
 	 */
 	ret = cpu_isa_config(kvm);
 	if (ret < 0)
-		return ret;
+		goto out_delete;
 
-	return perf_session__process_events(kvm->session);
+	ret = perf_session__process_events(kvm->session);
+
+out_delete:
+	perf_session__delete(kvm->session);
+	return ret;
 }
 
 static int parse_target_str(struct perf_kvm_stat *kvm)
-- 
1.9.1


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

* [PATCH v2 4/5] perf mem: Fill in the missing freeing a session after an error occur
  2015-06-30 15:18 [PATCH v2 3/5] perf kvm: Fill in the missing freeing a session after an error occur Taeung Song
@ 2015-06-30 15:18 ` Taeung Song
  2015-06-30 19:57   ` Arnaldo Carvalho de Melo
  2015-07-03  7:49 ` [tip:perf/urgent] perf kvm: Fill in the missing session freeing after an error occurs tip-bot for Taeung Song
  1 sibling, 1 reply; 6+ messages in thread
From: Taeung Song @ 2015-06-30 15:18 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, jolsa, namhyung, Ingo Molnar, Taeung Song

When an error occur a error value is just returned
without freeing the session. So allocating and freeing
session have to be matched as a pair even if an error occur.

Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
---
 tools/perf/builtin-mem.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
index da2ec06..a914ef7 100644
--- a/tools/perf/builtin-mem.c
+++ b/tools/perf/builtin-mem.c
@@ -124,7 +124,6 @@ static int report_raw_events(struct perf_mem *mem)
 		.mode = PERF_DATA_MODE_READ,
 		.force = mem->force,
 	};
-	int err = -EINVAL;
 	int ret;
 	struct perf_session *session = perf_session__new(&file, false,
 							 &mem->tool);
@@ -135,24 +134,23 @@ static int report_raw_events(struct perf_mem *mem)
 	if (mem->cpu_list) {
 		ret = perf_session__cpu_bitmap(session, mem->cpu_list,
 					       mem->cpu_bitmap);
-		if (ret)
+		if (ret) {
+			ret = -EINVAL;
 			goto out_delete;
+		}
 	}
 
-	if (symbol__init(&session->header.env) < 0)
-		return -1;
+	ret = symbol__init(&session->header.env);
+	if (ret < 0)
+		goto out_delete;
 
 	printf("# PID, TID, IP, ADDR, LOCAL WEIGHT, DSRC, SYMBOL\n");
 
-	err = perf_session__process_events(session);
-	if (err)
-		return err;
-
-	return 0;
+	ret = perf_session__process_events(session);
 
 out_delete:
 	perf_session__delete(session);
-	return err;
+	return ret;
 }
 
 static int report_events(int argc, const char **argv, struct perf_mem *mem)
-- 
1.9.1


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

* Re: [PATCH v2 4/5] perf mem: Fill in the missing freeing a session after an error occur
  2015-06-30 15:18 ` [PATCH v2 4/5] perf mem: " Taeung Song
@ 2015-06-30 19:57   ` Arnaldo Carvalho de Melo
  2015-07-01  4:58     ` taeung
  0 siblings, 1 reply; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-06-30 19:57 UTC (permalink / raw)
  To: Taeung Song; +Cc: linux-kernel, jolsa, namhyung, Ingo Molnar

Em Wed, Jul 01, 2015 at 12:18:45AM +0900, Taeung Song escreveu:
> When an error occur a error value is just returned
> without freeing the session. So allocating and freeing
> session have to be matched as a pair even if an error occur.
> 
> Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
> ---
>  tools/perf/builtin-mem.c | 18 ++++++++----------
>  1 file changed, 8 insertions(+), 10 deletions(-)
> 
> diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
> index da2ec06..a914ef7 100644
> --- a/tools/perf/builtin-mem.c
> +++ b/tools/perf/builtin-mem.c
> @@ -124,7 +124,6 @@ static int report_raw_events(struct perf_mem *mem)
>  		.mode = PERF_DATA_MODE_READ,
>  		.force = mem->force,
>  	};
> -	int err = -EINVAL;
>  	int ret;
>  	struct perf_session *session = perf_session__new(&file, false,
>  							 &mem->tool);
> @@ -135,24 +134,23 @@ static int report_raw_events(struct perf_mem *mem)
>  	if (mem->cpu_list) {
>  		ret = perf_session__cpu_bitmap(session, mem->cpu_list,
>  					       mem->cpu_bitmap);
> -		if (ret)
> +		if (ret) {
> +			ret = -EINVAL;

Why not propagate perf_session__cpu_bitmap() return, this function
wasn't being consistent in returning errors, neither was you, as, see
below...

>  			goto out_delete;
> +		}
>  	}
>  
> -	if (symbol__init(&session->header.env) < 0)
> -		return -1;
> +	ret = symbol__init(&session->header.env);
> +	if (ret < 0)
> +		goto out_delete;

Here you decided to propagate symbol__init() error return. :-)

I applied all the others, including the 3/5 v2 one.

Thanks,

- Arnaldo

>  
>  	printf("# PID, TID, IP, ADDR, LOCAL WEIGHT, DSRC, SYMBOL\n");
>  
> -	err = perf_session__process_events(session);
> -	if (err)
> -		return err;
> -
> -	return 0;
> +	ret = perf_session__process_events(session);
>  
>  out_delete:
>  	perf_session__delete(session);
> -	return err;
> +	return ret;
>  }
>  
>  static int report_events(int argc, const char **argv, struct perf_mem *mem)
> -- 
> 1.9.1

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

* Re: [PATCH v2 4/5] perf mem: Fill in the missing freeing a session after an error occur
  2015-06-30 19:57   ` Arnaldo Carvalho de Melo
@ 2015-07-01  4:58     ` taeung
  2015-07-01 14:42       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 6+ messages in thread
From: taeung @ 2015-07-01  4:58 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: linux-kernel, jolsa, namhyung, Ingo Molnar



On 07/01/2015 04:57 AM, Arnaldo Carvalho de Melo wrote:
> Em Wed, Jul 01, 2015 at 12:18:45AM +0900, Taeung Song escreveu:
>> When an error occur a error value is just returned
>> without freeing the session. So allocating and freeing
>> session have to be matched as a pair even if an error occur.
>>
>> Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
>> ---
>>   tools/perf/builtin-mem.c | 18 ++++++++----------
>>   1 file changed, 8 insertions(+), 10 deletions(-)
>>
>> diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
>> index da2ec06..a914ef7 100644
>> --- a/tools/perf/builtin-mem.c
>> +++ b/tools/perf/builtin-mem.c
>> @@ -124,7 +124,6 @@ static int report_raw_events(struct perf_mem *mem)
>>   		.mode = PERF_DATA_MODE_READ,
>>   		.force = mem->force,
>>   	};
>> -	int err = -EINVAL;
>>   	int ret;
>>   	struct perf_session *session = perf_session__new(&file, false,
>>   							 &mem->tool);
>> @@ -135,24 +134,23 @@ static int report_raw_events(struct perf_mem *mem)
>>   	if (mem->cpu_list) {
>>   		ret = perf_session__cpu_bitmap(session, mem->cpu_list,
>>   					       mem->cpu_bitmap);
>> -		if (ret)
>> +		if (ret) {
>> +			ret = -EINVAL;
> Why not propagate perf_session__cpu_bitmap() return, this function
> wasn't being consistent in returning errors, neither was you, as, see
> below...

perf_session__cpu_bitmap()
when an error occurs in this function, a error value which is -1 is returned.
Therefore, this conditional sentence 'if (ret)' have to be changed to 'if (ret < 0)' as below.

- if (ret)
+ if (ret < 0)
	goto out_delete;

Is it what you say ?


-- 
Thanks,
Taeung

>
>>   			goto out_delete;
>> +		}
>>   	}
>>   
>> -	if (symbol__init(&session->header.env) < 0)
>> -		return -1;
>> +	ret = symbol__init(&session->header.env);
>> +	if (ret < 0)
>> +		goto out_delete;
> Here you decided to propagate symbol__init() error return. :-)
>
> I applied all the others, including the 3/5 v2 one.
>
> Thanks,
>
> - Arnaldo
>
>>   
>>   	printf("# PID, TID, IP, ADDR, LOCAL WEIGHT, DSRC, SYMBOL\n");
>>   
>> -	err = perf_session__process_events(session);
>> -	if (err)
>> -		return err;
>> -
>> -	return 0;
>> +	ret = perf_session__process_events(session);
>>   
>>   out_delete:
>>   	perf_session__delete(session);
>> -	return err;
>> +	return ret;
>>   }
>>   
>>   static int report_events(int argc, const char **argv, struct perf_mem *mem)
>> -- 
>> 1.9.1

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

* Re: [PATCH v2 4/5] perf mem: Fill in the missing freeing a session after an error occur
  2015-07-01  4:58     ` taeung
@ 2015-07-01 14:42       ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-07-01 14:42 UTC (permalink / raw)
  To: taeung; +Cc: linux-kernel, jolsa, namhyung, Ingo Molnar

Em Wed, Jul 01, 2015 at 01:58:23PM +0900, taeung escreveu:
> On 07/01/2015 04:57 AM, Arnaldo Carvalho de Melo wrote:
> >Em Wed, Jul 01, 2015 at 12:18:45AM +0900, Taeung Song escreveu:
> >>@@ -135,24 +134,23 @@ static int report_raw_events(struct perf_mem *mem)
> >>  	if (mem->cpu_list) {
> >>  		ret = perf_session__cpu_bitmap(session, mem->cpu_list,
> >>  					       mem->cpu_bitmap);
> >>-		if (ret)
> >>+		if (ret) {
> >>+			ret = -EINVAL;
> >Why not propagate perf_session__cpu_bitmap() return, this function
> >wasn't being consistent in returning errors, neither was you, as, see
> >below...
 
> perf_session__cpu_bitmap()
> when an error occurs in this function, a error value which is -1 is returned.
> Therefore, this conditional sentence 'if (ret)' have to be changed to 'if (ret < 0)' as below.
> 
> - if (ret)
> + if (ret < 0)
> 	goto out_delete;
> 
> Is it what you say ?

No, the above change is not related to what I mentioned, it is harmless
albeit not needed, what I mentioned was about the part just after the
if:

	if (ret) {
		ret = -EINVAL;        <---------------- This one

But I see you removed that from your latest change, so all is fine now,
I think.

- Arnaldo
 
> 
> -- 
> Thanks,
> Taeung
> 
> >
> >>  			goto out_delete;
> >>+		}
> >>  	}
> >>-	if (symbol__init(&session->header.env) < 0)
> >>-		return -1;
> >>+	ret = symbol__init(&session->header.env);
> >>+	if (ret < 0)
> >>+		goto out_delete;
> >Here you decided to propagate symbol__init() error return. :-)
> >
> >I applied all the others, including the 3/5 v2 one.
> >
> >Thanks,
> >
> >- Arnaldo
> >
> >>  	printf("# PID, TID, IP, ADDR, LOCAL WEIGHT, DSRC, SYMBOL\n");
> >>-	err = perf_session__process_events(session);
> >>-	if (err)
> >>-		return err;
> >>-
> >>-	return 0;
> >>+	ret = perf_session__process_events(session);
> >>  out_delete:
> >>  	perf_session__delete(session);
> >>-	return err;
> >>+	return ret;
> >>  }
> >>  static int report_events(int argc, const char **argv, struct perf_mem *mem)
> >>-- 
> >>1.9.1

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

* [tip:perf/urgent] perf kvm: Fill in the missing session freeing after an error occurs
  2015-06-30 15:18 [PATCH v2 3/5] perf kvm: Fill in the missing freeing a session after an error occur Taeung Song
  2015-06-30 15:18 ` [PATCH v2 4/5] perf mem: " Taeung Song
@ 2015-07-03  7:49 ` tip-bot for Taeung Song
  1 sibling, 0 replies; 6+ messages in thread
From: tip-bot for Taeung Song @ 2015-07-03  7:49 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: tglx, namhyung, linux-kernel, hpa, jolsa, mingo, acme, treeze.taeung

Commit-ID:  41b983609a1618e9fa70023d83232ed959056c8a
Gitweb:     http://git.kernel.org/tip/41b983609a1618e9fa70023d83232ed959056c8a
Author:     Taeung Song <treeze.taeung@gmail.com>
AuthorDate: Wed, 1 Jul 2015 00:18:44 +0900
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 1 Jul 2015 17:53:49 -0300

perf kvm: Fill in the missing session freeing after an error occurs

When an error occurs an error value is just returned without freeing the
session. So allocating and freeing session have to be matched as a pair
even if an error occurs.

Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1435677525-28055-1-git-send-email-treeze.taeung@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-kvm.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
index 74878cd..fc1cffb 100644
--- a/tools/perf/builtin-kvm.c
+++ b/tools/perf/builtin-kvm.c
@@ -1061,8 +1061,10 @@ static int read_events(struct perf_kvm_stat *kvm)
 
 	symbol__init(&kvm->session->header.env);
 
-	if (!perf_session__has_traces(kvm->session, "kvm record"))
-		return -EINVAL;
+	if (!perf_session__has_traces(kvm->session, "kvm record")) {
+		ret = -EINVAL;
+		goto out_delete;
+	}
 
 	/*
 	 * Do not use 'isa' recorded in kvm_exit tracepoint since it is not
@@ -1070,9 +1072,13 @@ static int read_events(struct perf_kvm_stat *kvm)
 	 */
 	ret = cpu_isa_config(kvm);
 	if (ret < 0)
-		return ret;
+		goto out_delete;
 
-	return perf_session__process_events(kvm->session);
+	ret = perf_session__process_events(kvm->session);
+
+out_delete:
+	perf_session__delete(kvm->session);
+	return ret;
 }
 
 static int parse_target_str(struct perf_kvm_stat *kvm)

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

end of thread, other threads:[~2015-07-03  7:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-30 15:18 [PATCH v2 3/5] perf kvm: Fill in the missing freeing a session after an error occur Taeung Song
2015-06-30 15:18 ` [PATCH v2 4/5] perf mem: " Taeung Song
2015-06-30 19:57   ` Arnaldo Carvalho de Melo
2015-07-01  4:58     ` taeung
2015-07-01 14:42       ` Arnaldo Carvalho de Melo
2015-07-03  7:49 ` [tip:perf/urgent] perf kvm: Fill in the missing session freeing after an error occurs tip-bot for Taeung Song

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).