2020-05-23 15:56:01

by chengkaitao

[permalink] [raw]
Subject: [PATCH] trace/ftrace: fix maybe-uninitialized compiler warning

During build compiler reports some 'false positive' warnings about
variables {'seq_ops', 'filtered_pids', 'other_pids'} may be used
uninitialized. This patch silences these warnings.
Also delete some useless spaces

Signed-off-by: Kaitao Cheng <[email protected]>
---
kernel/trace/ftrace.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 7d0ebd104706..01a61bdc4e63 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -2260,7 +2260,7 @@ ftrace_find_tramp_ops_next(struct dyn_ftrace *rec,

if (hash_contains_ip(ip, op->func_hash))
return op;
- }
+ }

return NULL;
}
@@ -3599,7 +3599,7 @@ static int t_show(struct seq_file *m, void *v)
if (direct)
seq_printf(m, "\n\tdirect-->%pS", (void *)direct);
}
- }
+ }

seq_putc(m, '\n');

@@ -7151,6 +7151,9 @@ static int pid_open(struct inode *inode, struct file *file, int type)
case TRACE_NO_PIDS:
seq_ops = &ftrace_no_pid_sops;
break;
+ default:
+ trace_array_put(tr);
+ return -EINVAL;
}

ret = seq_open(file, seq_ops);
@@ -7229,6 +7232,9 @@ pid_write(struct file *filp, const char __user *ubuf,
other_pids = rcu_dereference_protected(tr->function_pids,
lockdep_is_held(&ftrace_lock));
break;
+ default:
+ ret = -EINVAL;
+ goto out;
}

ret = trace_pid_write(filtered_pids, &pid_list, ubuf, cnt);
--
2.20.1


2020-05-28 23:52:44

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] trace/ftrace: fix maybe-uninitialized compiler warning

Hi Kaitao,

Sorry for the late response, I've been a bit swamped.

On Sat, 23 May 2020 23:53:04 +0800
Kaitao Cheng <[email protected]> wrote:

> During build compiler reports some 'false positive' warnings about
> variables {'seq_ops', 'filtered_pids', 'other_pids'} may be used
> uninitialized. This patch silences these warnings.
> Also delete some useless spaces
>
> Signed-off-by: Kaitao Cheng <[email protected]>
> ---
> kernel/trace/ftrace.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index 7d0ebd104706..01a61bdc4e63 100644
> --- a/kernel/trace/ftrace.c
> +++ b/kernel/trace/ftrace.c
> @@ -2260,7 +2260,7 @@ ftrace_find_tramp_ops_next(struct dyn_ftrace *rec,
>
> if (hash_contains_ip(ip, op->func_hash))
> return op;
> - }
> + }
>
> return NULL;
> }
> @@ -3599,7 +3599,7 @@ static int t_show(struct seq_file *m, void *v)
> if (direct)
> seq_printf(m, "\n\tdirect-->%pS", (void *)direct);
> }
> - }
> + }
>
> seq_putc(m, '\n');
>
> @@ -7151,6 +7151,9 @@ static int pid_open(struct inode *inode, struct file *file, int type)
> case TRACE_NO_PIDS:
> seq_ops = &ftrace_no_pid_sops;
> break;
> + default:
> + trace_array_put(tr);
> + return -EINVAL;
> }
>
> ret = seq_open(file, seq_ops);
> @@ -7229,6 +7232,9 @@ pid_write(struct file *filp, const char __user *ubuf,
> other_pids = rcu_dereference_protected(tr->function_pids,
> lockdep_is_held(&ftrace_lock));
> break;
> + default:
> + ret = -EINVAL;

As these are anomalies, and should never happen, we should probably add
a WARN_ON_ONCE(1); here as well.

Care to send a v2?

Thanks!

-- Steve


> + goto out;
> }
>
> ret = trace_pid_write(filtered_pids, &pid_list, ubuf, cnt);