* [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code
@ 2020-01-20 16:36 Jules Irenge
2020-01-20 16:36 ` [PATCH 3/7] tracing: Have stack tracer compile when MCOUNT_INSN_SIZE is not defined Jules Irenge
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Jules Irenge @ 2020-01-20 16:36 UTC (permalink / raw)
To: jbi.octave; +Cc: Steven Rostedt (VMware), stable, kbuild test robot
From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
gcc produces a variable may be uninitialized warning for "val" in
parse_entry(). This is really a false positive, but the code is subtle
enough to just initialize val to zero and it's not a fast path to worry
about it.
Marked for stable to remove the warning in the stable trees as well.
Cc: stable@vger.kernel.org
Fixes: 6c3edaf9fd6a3 ("tracing: Introduce trace event injection")
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
kernel/trace/trace_events_inject.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/trace_events_inject.c b/kernel/trace/trace_events_inject.c
index d45079ee62f8..22bcf7c51d1e 100644
--- a/kernel/trace/trace_events_inject.c
+++ b/kernel/trace/trace_events_inject.c
@@ -195,7 +195,7 @@ static int parse_entry(char *str, struct trace_event_call *call, void **pentry)
unsigned long irq_flags;
void *entry = NULL;
int entry_size;
- u64 val;
+ u64 val = 0;
int len;
entry = trace_alloc_entry(call, &entry_size);
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/7] tracing: Have stack tracer compile when MCOUNT_INSN_SIZE is not defined
2020-01-20 16:36 [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code Jules Irenge
@ 2020-01-20 16:36 ` Jules Irenge
2020-01-20 16:36 ` [PATCH 4/7] ftrace: Avoid potential division by zero in function profiler Jules Irenge
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Jules Irenge @ 2020-01-20 16:36 UTC (permalink / raw)
To: jbi.octave; +Cc: Steven Rostedt (VMware), stable, kbuild test robot
From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
On some archs with some configurations, MCOUNT_INSN_SIZE is not defined, and
this makes the stack tracer fail to compile. Just define it to zero in this
case.
Link: https://lore.kernel.org/r/202001020219.zvE3vsty%lkp@intel.com
Cc: stable@vger.kernel.org
Fixes: 4df297129f622 ("tracing: Remove most or all of stack tracer stack size from stack_max_size")
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
kernel/trace/trace_stack.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
index 4df9a209f7ca..c557f42a9397 100644
--- a/kernel/trace/trace_stack.c
+++ b/kernel/trace/trace_stack.c
@@ -283,6 +283,11 @@ static void check_stack(unsigned long ip, unsigned long *stack)
local_irq_restore(flags);
}
+/* Some archs may not define MCOUNT_INSN_SIZE */
+#ifndef MCOUNT_INSN_SIZE
+# define MCOUNT_INSN_SIZE 0
+#endif
+
static void
stack_trace_call(unsigned long ip, unsigned long parent_ip,
struct ftrace_ops *op, struct pt_regs *pt_regs)
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/7] ftrace: Avoid potential division by zero in function profiler
2020-01-20 16:36 [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code Jules Irenge
2020-01-20 16:36 ` [PATCH 3/7] tracing: Have stack tracer compile when MCOUNT_INSN_SIZE is not defined Jules Irenge
@ 2020-01-20 16:36 ` Jules Irenge
2020-01-20 16:36 ` [PATCH 5/7] tracing: Change offset type to s32 in preempt/irq tracepoints Jules Irenge
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Jules Irenge @ 2020-01-20 16:36 UTC (permalink / raw)
To: jbi.octave; +Cc: Wen Yang, stable, Steven Rostedt
From: Wen Yang <wenyang@linux.alibaba.com>
The ftrace_profile->counter is unsigned long and
do_div truncates it to 32 bits, which means it can test
non-zero and be truncated to zero for division.
Fix this issue by using div64_ul() instead.
Link: http://lkml.kernel.org/r/20200103030248.14516-1-wenyang@linux.alibaba.com
Cc: stable@vger.kernel.org
Fixes: e330b3bcd8319 ("tracing: Show sample std dev in function profiling")
Fixes: 34886c8bc590f ("tracing: add average time in function to function profiler")
Signed-off-by: Wen Yang <wenyang@linux.alibaba.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
kernel/trace/ftrace.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index ac99a3500076..9bf1f2cd515e 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -526,8 +526,7 @@ static int function_stat_show(struct seq_file *m, void *v)
}
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
- avg = rec->time;
- do_div(avg, rec->counter);
+ avg = div64_ul(rec->time, rec->counter);
if (tracing_thresh && (avg < tracing_thresh))
goto out;
#endif
@@ -553,7 +552,8 @@ static int function_stat_show(struct seq_file *m, void *v)
* Divide only 1000 for ns^2 -> us^2 conversion.
* trace_print_graph_duration will divide 1000 again.
*/
- do_div(stddev, rec->counter * (rec->counter - 1) * 1000);
+ stddev = div64_ul(stddev,
+ rec->counter * (rec->counter - 1) * 1000);
}
trace_seq_init(&s);
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/7] tracing: Change offset type to s32 in preempt/irq tracepoints
2020-01-20 16:36 [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code Jules Irenge
2020-01-20 16:36 ` [PATCH 3/7] tracing: Have stack tracer compile when MCOUNT_INSN_SIZE is not defined Jules Irenge
2020-01-20 16:36 ` [PATCH 4/7] ftrace: Avoid potential division by zero in function profiler Jules Irenge
@ 2020-01-20 16:36 ` Jules Irenge
2020-01-20 16:36 ` [PATCH 6/7] kernel/trace: Fix do not unregister tracepoints when register sched_migrate_task fail Jules Irenge
2020-01-20 21:27 ` [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code Steven Rostedt
4 siblings, 0 replies; 6+ messages in thread
From: Jules Irenge @ 2020-01-20 16:36 UTC (permalink / raw)
To: jbi.octave
Cc: Joel Fernandes (Google),
Bjorn Helgaas, David Sterba, Ingo Molnar, Mike Rapoport,
Rafael J. Wysocki, Sakari Ailus, Antonio Borneo, stable,
Steven Rostedt
From: "Joel Fernandes (Google)" <joel@joelfernandes.org>
Discussion in the below link reported that symbols in modules can appear
to be before _stext on ARM architecture, causing wrapping with the
offsets of this tracepoint. Change the offset type to s32 to fix this.
Link: http://lore.kernel.org/r/20191127154428.191095-1-antonio.borneo@st.com
Link: http://lkml.kernel.org/r/20200102194625.226436-1-joel@joelfernandes.org
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: David Sterba <dsterba@suse.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Mike Rapoport <rppt@linux.ibm.com>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: Antonio Borneo <antonio.borneo@st.com>
Cc: stable@vger.kernel.org
Fixes: d59158162e032 ("tracing: Add support for preempt and irq enable/disable events")
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
include/trace/events/preemptirq.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/trace/events/preemptirq.h b/include/trace/events/preemptirq.h
index 95fba0471e5b..3f249e150c0c 100644
--- a/include/trace/events/preemptirq.h
+++ b/include/trace/events/preemptirq.h
@@ -18,13 +18,13 @@ DECLARE_EVENT_CLASS(preemptirq_template,
TP_ARGS(ip, parent_ip),
TP_STRUCT__entry(
- __field(u32, caller_offs)
- __field(u32, parent_offs)
+ __field(s32, caller_offs)
+ __field(s32, parent_offs)
),
TP_fast_assign(
- __entry->caller_offs = (u32)(ip - (unsigned long)_stext);
- __entry->parent_offs = (u32)(parent_ip - (unsigned long)_stext);
+ __entry->caller_offs = (s32)(ip - (unsigned long)_stext);
+ __entry->parent_offs = (s32)(parent_ip - (unsigned long)_stext);
),
TP_printk("caller=%pS parent=%pS",
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 6/7] kernel/trace: Fix do not unregister tracepoints when register sched_migrate_task fail
2020-01-20 16:36 [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code Jules Irenge
` (2 preceding siblings ...)
2020-01-20 16:36 ` [PATCH 5/7] tracing: Change offset type to s32 in preempt/irq tracepoints Jules Irenge
@ 2020-01-20 16:36 ` Jules Irenge
2020-01-20 21:27 ` [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code Steven Rostedt
4 siblings, 0 replies; 6+ messages in thread
From: Jules Irenge @ 2020-01-20 16:36 UTC (permalink / raw)
To: jbi.octave; +Cc: Kaitao Cheng, stable, Steven Rostedt
From: Kaitao Cheng <pilgrimtao@gmail.com>
In the function, if register_trace_sched_migrate_task() returns error,
sched_switch/sched_wakeup_new/sched_wakeup won't unregister. That is
why fail_deprobe_sched_switch was added.
Link: http://lkml.kernel.org/r/20191231133530.2794-1-pilgrimtao@gmail.com
Cc: stable@vger.kernel.org
Fixes: 478142c39c8c2 ("tracing: do not grab lock in wakeup latency function tracing")
Signed-off-by: Kaitao Cheng <pilgrimtao@gmail.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
kernel/trace/trace_sched_wakeup.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/kernel/trace/trace_sched_wakeup.c b/kernel/trace/trace_sched_wakeup.c
index 5e43b9664eca..617e297f46dc 100644
--- a/kernel/trace/trace_sched_wakeup.c
+++ b/kernel/trace/trace_sched_wakeup.c
@@ -630,7 +630,7 @@ static void start_wakeup_tracer(struct trace_array *tr)
if (ret) {
pr_info("wakeup trace: Couldn't activate tracepoint"
" probe to kernel_sched_migrate_task\n");
- return;
+ goto fail_deprobe_sched_switch;
}
wakeup_reset(tr);
@@ -648,6 +648,8 @@ static void start_wakeup_tracer(struct trace_array *tr)
printk(KERN_ERR "failed to start wakeup tracer\n");
return;
+fail_deprobe_sched_switch:
+ unregister_trace_sched_switch(probe_wakeup_sched_switch, NULL);
fail_deprobe_wake_new:
unregister_trace_sched_wakeup_new(probe_wakeup, NULL);
fail_deprobe:
--
2.24.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code
2020-01-20 16:36 [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code Jules Irenge
` (3 preceding siblings ...)
2020-01-20 16:36 ` [PATCH 6/7] kernel/trace: Fix do not unregister tracepoints when register sched_migrate_task fail Jules Irenge
@ 2020-01-20 21:27 ` Steven Rostedt
4 siblings, 0 replies; 6+ messages in thread
From: Steven Rostedt @ 2020-01-20 21:27 UTC (permalink / raw)
To: Jules Irenge; +Cc: stable, kbuild test robot
Why am I receiving these?
-- Steve
On Mon, 20 Jan 2020 16:36:16 +0000
Jules Irenge <jbi.octave@gmail.com> wrote:
> From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
>
> gcc produces a variable may be uninitialized warning for "val" in
> parse_entry(). This is really a false positive, but the code is subtle
> enough to just initialize val to zero and it's not a fast path to worry
> about it.
>
> Marked for stable to remove the warning in the stable trees as well.
>
> Cc: stable@vger.kernel.org
> Fixes: 6c3edaf9fd6a3 ("tracing: Introduce trace event injection")
> Reported-by: kbuild test robot <lkp@intel.com>
> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> ---
> kernel/trace/trace_events_inject.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/trace/trace_events_inject.c b/kernel/trace/trace_events_inject.c
> index d45079ee62f8..22bcf7c51d1e 100644
> --- a/kernel/trace/trace_events_inject.c
> +++ b/kernel/trace/trace_events_inject.c
> @@ -195,7 +195,7 @@ static int parse_entry(char *str, struct trace_event_call *call, void **pentry)
> unsigned long irq_flags;
> void *entry = NULL;
> int entry_size;
> - u64 val;
> + u64 val = 0;
> int len;
>
> entry = trace_alloc_entry(call, &entry_size);
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-01-20 21:27 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-20 16:36 [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code Jules Irenge
2020-01-20 16:36 ` [PATCH 3/7] tracing: Have stack tracer compile when MCOUNT_INSN_SIZE is not defined Jules Irenge
2020-01-20 16:36 ` [PATCH 4/7] ftrace: Avoid potential division by zero in function profiler Jules Irenge
2020-01-20 16:36 ` [PATCH 5/7] tracing: Change offset type to s32 in preempt/irq tracepoints Jules Irenge
2020-01-20 16:36 ` [PATCH 6/7] kernel/trace: Fix do not unregister tracepoints when register sched_migrate_task fail Jules Irenge
2020-01-20 21:27 ` [PATCH 1/7] tracing: Initialize val to zero in parse_entry of inject code Steven Rostedt
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).