2022-06-30 01:45:31

by Zheng Yejian

[permalink] [raw]
Subject: [PATCH] tracing/histograms: Simplify create_hist_fields()

When I look into implements of create_hist_fields(), I think there can be
following two simplifications:
1. If something wrong happened in parse_var_defs(), free_var_defs() would
have been called in it, so no need goto free again after calling it;
2. After calling create_key_fields(), regardless of the value of 'ret', it
then always runs into 'out: ', so the judge of 'ret' is redundant.

No functional changes.

Signed-off-by: Zheng Yejian <[email protected]>
---
kernel/trace/trace_events_hist.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
index 2784951e0fc8..832c4ccf41ab 100644
--- a/kernel/trace/trace_events_hist.c
+++ b/kernel/trace/trace_events_hist.c
@@ -4454,7 +4454,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,

ret = parse_var_defs(hist_data);
if (ret)
- goto out;
+ return ret;

ret = create_val_fields(hist_data, file);
if (ret)
@@ -4465,8 +4465,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,
goto out;

ret = create_key_fields(hist_data, file);
- if (ret)
- goto out;
+
out:
free_var_defs(hist_data);

--
2.32.0


2022-06-30 02:40:48

by Tom Rix

[permalink] [raw]
Subject: Re: [PATCH] tracing/histograms: Simplify create_hist_fields()


On 6/29/22 6:31 PM, Zheng Yejian wrote:
> When I look into implements of create_hist_fields(), I think there can be
> following two simplifications:
> 1. If something wrong happened in parse_var_defs(), free_var_defs() would
> have been called in it, so no need goto free again after calling it;
> 2. After calling create_key_fields(), regardless of the value of 'ret', it
> then always runs into 'out: ', so the judge of 'ret' is redundant.
>
> No functional changes.
>
> Signed-off-by: Zheng Yejian <[email protected]>
> ---
> kernel/trace/trace_events_hist.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
> index 2784951e0fc8..832c4ccf41ab 100644
> --- a/kernel/trace/trace_events_hist.c
> +++ b/kernel/trace/trace_events_hist.c
> @@ -4454,7 +4454,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,
>
> ret = parse_var_defs(hist_data);
> if (ret)
> - goto out;
> + return ret;
>
> ret = create_val_fields(hist_data, file);
> if (ret)
> @@ -4465,8 +4465,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,
> goto out;
>
> ret = create_key_fields(hist_data, file);
> - if (ret)
> - goto out;
> +
> out:
> free_var_defs(hist_data);
Reviewed-by: Tom Rix <[email protected]>
>

2022-06-30 06:42:36

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] tracing/histograms: Simplify create_hist_fields()

On Thu, Jun 30, 2022 at 09:31:52AM +0800, Zheng Yejian wrote:
> When I look into implements of create_hist_fields(), I think there can be
> following two simplifications:
> 1. If something wrong happened in parse_var_defs(), free_var_defs() would
> have been called in it, so no need goto free again after calling it;
> 2. After calling create_key_fields(), regardless of the value of 'ret', it
> then always runs into 'out: ', so the judge of 'ret' is redundant.
>
> No functional changes.
>
> Signed-off-by: Zheng Yejian <[email protected]>
> ---
> kernel/trace/trace_events_hist.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
> index 2784951e0fc8..832c4ccf41ab 100644
> --- a/kernel/trace/trace_events_hist.c
> +++ b/kernel/trace/trace_events_hist.c
> @@ -4454,7 +4454,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,
>
> ret = parse_var_defs(hist_data);
> if (ret)
> - goto out;
> + return ret;
>
> ret = create_val_fields(hist_data, file);
> if (ret)
> @@ -4465,8 +4465,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,
> goto out;
>
> ret = create_key_fields(hist_data, file);
> - if (ret)
> - goto out;
> +
> out:
> free_var_defs(hist_data);
>
> --
> 2.32.0
>

<formletter>

This is not the correct way to submit patches for inclusion in the
stable kernel tree. Please read:
https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.

</formletter>

2022-06-30 09:58:14

by Zheng Yejian

[permalink] [raw]
Subject: Re: [PATCH] tracing/histograms: Simplify create_hist_fields()

On 2022/6/30 14:33, Greg KH wrote:
> On Thu, Jun 30, 2022 at 09:31:52AM +0800, Zheng Yejian wrote:
>> When I look into implements of create_hist_fields(), I think there can be
>> following two simplifications:
>> 1. If something wrong happened in parse_var_defs(), free_var_defs() would
>> have been called in it, so no need goto free again after calling it;
>> 2. After calling create_key_fields(), regardless of the value of 'ret', it
>> then always runs into 'out: ', so the judge of 'ret' is redundant.
>>
>> No functional changes.
>>
>> Signed-off-by: Zheng Yejian <[email protected]>
>> ---
>> kernel/trace/trace_events_hist.c | 5 ++---
>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
>> index 2784951e0fc8..832c4ccf41ab 100644
>> --- a/kernel/trace/trace_events_hist.c
>> +++ b/kernel/trace/trace_events_hist.c
>> @@ -4454,7 +4454,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,
>>
>> ret = parse_var_defs(hist_data);
>> if (ret)
>> - goto out;
>> + return ret;
>>
>> ret = create_val_fields(hist_data, file);
>> if (ret)
>> @@ -4465,8 +4465,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,
>> goto out;
>>
>> ret = create_key_fields(hist_data, file);
>> - if (ret)
>> - goto out;
>> +
>> out:
>> free_var_defs(hist_data);
>>
>> --
>> 2.32.0
>>
>
> <formletter>
>
> This is not the correct way to submit patches for inclusion in the
> stable kernel tree. Please read:

This patch is a cleanup, no need to include in stable kernel tree.
I accidentally copied the patch to stable mailbox, sorry for that :(

> https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
> for how to do this properly.
>
> </formletter>

2022-07-12 18:03:11

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] tracing/histograms: Simplify create_hist_fields()

On Thu, 30 Jun 2022 09:31:52 +0800
Zheng Yejian <[email protected]> wrote:

> When I look into implements of create_hist_fields(), I think there can be
> following two simplifications:
> 1. If something wrong happened in parse_var_defs(), free_var_defs() would
> have been called in it, so no need goto free again after calling it;
> 2. After calling create_key_fields(), regardless of the value of 'ret', it
> then always runs into 'out: ', so the judge of 'ret' is redundant.
>
> No functional changes.

I applied this but removed the "No functional changes" because it is a
functional change. The end result may be the same, but the flow is
different, and that means it changed functionally.

The only time "No functional changes" should be stated is if you move code
around or change #ifdefs to perform the same action. IOW, if the assembly
produced by the compiler is the same before and after your change, you can
say "No functional changes", otherwise don't ever say that.

This is important, because if a bisect lands on this, people may think the
bisect is incorrect, when in reality it could be the cause of the bug (I
just had this happen to me with another commit that had "No functional
changes" :-p )

-- Steve


>
> Signed-off-by: Zheng Yejian <[email protected]>

2022-07-12 18:21:03

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] tracing/histograms: Simplify create_hist_fields()

On Thu, 30 Jun 2022 09:31:52 +0800
Zheng Yejian <[email protected]> wrote:

> diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
> index 2784951e0fc8..832c4ccf41ab 100644
> --- a/kernel/trace/trace_events_hist.c
> +++ b/kernel/trace/trace_events_hist.c
> @@ -4454,7 +4454,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,
>
> ret = parse_var_defs(hist_data);
> if (ret)
> - goto out;
> + return ret;

This is a functional change.

>
> ret = create_val_fields(hist_data, file);
> if (ret)
> @@ -4465,8 +4465,7 @@ static int create_hist_fields(struct hist_trigger_data *hist_data,
> goto out;
>
> ret = create_key_fields(hist_data, file);
> - if (ret)
> - goto out;
> +
> out:

This is not a functional change ;-)

If you just had the latter, then it would have been OK to state "No
functional changes".

-- Steve

> free_var_defs(hist_data);
>

2022-07-13 10:35:56

by Zheng Yejian

[permalink] [raw]
Subject: Re: [PATCH] tracing/histograms: Simplify create_hist_fields()

On Tue, 12 Jul 2022 13:49:56 -0400
Steven Rostedt <[email protected]> wrote:
> On Thu, 30 Jun 2022 09:31:52 +0800
> Zheng Yejian <[email protected]> wrote:
>
> > When I look into implements of create_hist_fields(), I think there can be
> > following two simplifications:
> > 1. If something wrong happened in parse_var_defs(), free_var_defs() would
> > have been called in it, so no need goto free again after calling it;
> > 2. After calling create_key_fields(), regardless of the value of 'ret', it
> > then always runs into 'out: ', so the judge of 'ret' is redundant.
> >
> > No functional changes.
>
> I applied this but removed the "No functional changes" because it is a
> functional change. The end result may be the same, but the flow is
> different, and that means it changed functionally.
>
> The only time "No functional changes" should be stated is if you move code
> around or change #ifdefs to perform the same action. IOW, if the assembly
> produced by the compiler is the same before and after your change, you can
> say "No functional changes", otherwise don't ever say that.
>
> This is important, because if a bisect lands on this, people may think the
> bisect is incorrect, when in reality it could be the cause of the bug (I
> just had this happen to me with another commit that had "No functional
> changes" :-p )

I learn it now and share it with my colleagues in the neighborhood.
Thanks for your patience :)

>
> -- Steve
>
>
> >
> > Signed-off-by: Zheng Yejian <[email protected]>