2019-01-25 02:21:17

by Frank Rowand

[permalink] [raw]
Subject: [PATCH] tracing: initialize variable in create_dyn_event()

From: Frank Rowand <[email protected]>

Fix compile warning in create_dyn_event(): 'ret' may be used uninitialized
in this function [-Wuninitialized].

Fixes: 5448d44c3855 ("tracing: Add unified dynamic event framework")

Signed-off-by: Frank Rowand <[email protected]>
---

Compile and boot tested only. Please verify the initialization value
of zero is correct.

There is also a sparse warning you might want to check into (when
ARCH=arm, so 32 bit):

include/uapi/linux/perf_event.h:147:56: warning: cast truncates bits from constant value (8000000000000000 becomes 0)


kernel/trace/trace_dynevent.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/trace/trace_dynevent.c b/kernel/trace/trace_dynevent.c
index dd1f43588d70..4f633476c307 100644
--- a/kernel/trace/trace_dynevent.c
+++ b/kernel/trace/trace_dynevent.c
@@ -74,7 +74,7 @@ int dyn_event_release(int argc, char **argv, struct dyn_event_operations *type)
static int create_dyn_event(int argc, char **argv)
{
struct dyn_event_operations *ops;
- int ret;
+ int ret = 0;

if (argv[0][0] == '-' || argv[0][0] == '!')
return dyn_event_release(argc, argv, NULL);
--
Frank Rowand <[email protected]>



2019-03-14 21:05:57

by Frank Rowand

[permalink] [raw]
Subject: Re: [PATCH] tracing: initialize variable in create_dyn_event()

Hi Steve,

Ping.

-Frank


On 1/24/19 6:17 PM, [email protected] wrote:
> From: Frank Rowand <[email protected]>
>
> Fix compile warning in create_dyn_event(): 'ret' may be used uninitialized
> in this function [-Wuninitialized].
>
> Fixes: 5448d44c3855 ("tracing: Add unified dynamic event framework")
>
> Signed-off-by: Frank Rowand <[email protected]>
> ---
>
> Compile and boot tested only. Please verify the initialization value
> of zero is correct.
>
> There is also a sparse warning you might want to check into (when
> ARCH=arm, so 32 bit):
>
> include/uapi/linux/perf_event.h:147:56: warning: cast truncates bits from constant value (8000000000000000 becomes 0)
>
>
> kernel/trace/trace_dynevent.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/trace/trace_dynevent.c b/kernel/trace/trace_dynevent.c
> index dd1f43588d70..4f633476c307 100644
> --- a/kernel/trace/trace_dynevent.c
> +++ b/kernel/trace/trace_dynevent.c
> @@ -74,7 +74,7 @@ int dyn_event_release(int argc, char **argv, struct dyn_event_operations *type)
> static int create_dyn_event(int argc, char **argv)
> {
> struct dyn_event_operations *ops;
> - int ret;
> + int ret = 0;
>
> if (argv[0][0] == '-' || argv[0][0] == '!')
> return dyn_event_release(argc, argv, NULL);
>


2019-03-14 22:22:05

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] tracing: initialize variable in create_dyn_event()

On Thu, 14 Mar 2019 14:05:02 -0700
Frank Rowand <[email protected]> wrote:

> Hi Steve,
>
> Ping.

Thanks, this got buried.

> > static int create_dyn_event(int argc, char **argv)
> > {
> > struct dyn_event_operations *ops;
> > - int ret;
> > + int ret = 0;

Probably should be ret = -ENODEV;

As if ret doesn't get set, then no dynamic code has been registered,
and something is truly wrong.

-- Steve


> >
> > if (argv[0][0] == '-' || argv[0][0] == '!')
> > return dyn_event_release(argc, argv, NULL);
> >


2019-03-14 23:29:22

by Masami Hiramatsu

[permalink] [raw]
Subject: Re: [PATCH] tracing: initialize variable in create_dyn_event()

Hi Frank and Steve,

Thank you for pointing it out :)

On Thu, 14 Mar 2019 18:19:08 -0400
Steven Rostedt <[email protected]> wrote:

> On Thu, 14 Mar 2019 14:05:02 -0700
> Frank Rowand <[email protected]> wrote:
>
> > Hi Steve,
> >
> > Ping.
>
> Thanks, this got buried.
>
> > > static int create_dyn_event(int argc, char **argv)
> > > {
> > > struct dyn_event_operations *ops;
> > > - int ret;
> > > + int ret = 0;
>
> Probably should be ret = -ENODEV;
>
> As if ret doesn't get set, then no dynamic code has been registered,
> and something is truly wrong.

I Agreed to return -ENODEV instead of 0.

Thank you,

>
> -- Steve
>
>
> > >
> > > if (argv[0][0] == '-' || argv[0][0] == '!')
> > > return dyn_event_release(argc, argv, NULL);
> > >
>


--
Masami Hiramatsu <[email protected]>

2019-03-15 15:57:43

by Frank Rowand

[permalink] [raw]
Subject: Re: [PATCH] tracing: initialize variable in create_dyn_event()

On 3/14/19 4:26 PM, Masami Hiramatsu wrote:
> Hi Frank and Steve,
>
> Thank you for pointing it out :)
>
> On Thu, 14 Mar 2019 18:19:08 -0400
> Steven Rostedt <[email protected]> wrote:
>
>> On Thu, 14 Mar 2019 14:05:02 -0700
>> Frank Rowand <[email protected]> wrote:
>>
>>> Hi Steve,
>>>
>>> Ping.
>>
>> Thanks, this got buried.
>>
>>>> static int create_dyn_event(int argc, char **argv)
>>>> {
>>>> struct dyn_event_operations *ops;
>>>> - int ret;
>>>> + int ret = 0;
>>
>> Probably should be ret = -ENODEV;
>>
>> As if ret doesn't get set, then no dynamic code has been registered,
>> and something is truly wrong.
>
> I Agreed to return -ENODEV instead of 0.
>
> Thank you,
>
>>
>> -- Steve
>>
>>
>>>>
>>>> if (argv[0][0] == '-' || argv[0][0] == '!')
>>>> return dyn_event_release(argc, argv, NULL);
>>>>
>>
>
>

Thanks, I'll fix and resend.