| From: "Steven Rostedt (VMware)" <rostedt@goodmis.org> |
| Date: Wed, 25 Jul 2018 22:28:56 -0400 |
| Subject: tracing: Quiet gcc warning about maybe unused link variable |
| |
| commit 2519c1bbe38d7acacc9aacba303ca6f97482ed53 upstream. |
| |
| Commit 57ea2a34adf4 ("tracing/kprobes: Fix trace_probe flags on |
| enable_trace_kprobe() failure") added an if statement that depends on another |
| if statement that gcc doesn't see will initialize the "link" variable and |
| gives the warning: |
| |
| "warning: 'link' may be used uninitialized in this function" |
| |
| It is really a false positive, but to quiet the warning, and also to make |
| sure that it never actually is used uninitialized, initialize the "link" |
| variable to NULL and add an if (!WARN_ON_ONCE(!link)) where the compiler |
| thinks it could be used uninitialized. |
| |
| Fixes: 57ea2a34adf4 ("tracing/kprobes: Fix trace_probe flags on enable_trace_kprobe() failure") |
| Reported-by: kbuild test robot <lkp@intel.com> |
| Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| kernel/trace/trace_kprobe.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| --- a/kernel/trace/trace_kprobe.c |
| +++ b/kernel/trace/trace_kprobe.c |
| @@ -361,7 +361,7 @@ static struct trace_kprobe *find_trace_k |
| static int |
| enable_trace_kprobe(struct trace_kprobe *tk, struct ftrace_event_file *file) |
| { |
| - struct event_file_link *link; |
| + struct event_file_link *link = NULL; |
| int ret = 0; |
| |
| if (file) { |
| @@ -387,7 +387,9 @@ enable_trace_kprobe(struct trace_kprobe |
| |
| if (ret) { |
| if (file) { |
| - list_del_rcu(&link->list); |
| + /* Notice the if is true on not WARN() */ |
| + if (!WARN_ON_ONCE(!link)) |
| + list_del_rcu(&link->list); |
| kfree(link); |
| tk->tp.flags &= ~TP_FLAG_TRACE; |
| } else { |