diff options
author | Peter Zijlstra <peterz@infradead.org> | 2020-05-28 16:52:40 +0200 |
---|---|---|
committer | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2020-06-01 14:23:42 +0200 |
commit | 58f6e384480ec97b902e44399a44862907840ba9 (patch) | |
tree | b9275114631092ae6c3b3706df678e7533c78768 /lib/bug.c | |
parent | selftests/ftrace: Distinguish between hist and synthetic event checks (diff) | |
download | linux-58f6e384480ec97b902e44399a44862907840ba9.tar.xz linux-58f6e384480ec97b902e44399a44862907840ba9.zip |
ftrace,bug: Improve traceoff_on_warn
While doing some tracing, I found a huge portion of the per-cpu buffer
was taken by printk/serial output because we're disabling the trace far
too late (after printing the CUT string).
Improve matters for architectures that have GENERIC_BUG + _BUG_FLAGS by
killing the tracer in the exception handler before printing anything
much.
Link: https://lkml.kernel.org/r/20200528145240.GF706495@hirez.programming.kicks-ass.net
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'lib/bug.c')
-rw-r--r-- | lib/bug.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/bug.c b/lib/bug.c index 8c98af0bf585..7103440c0ee1 100644 --- a/lib/bug.c +++ b/lib/bug.c @@ -47,6 +47,7 @@ #include <linux/bug.h> #include <linux/sched.h> #include <linux/rculist.h> +#include <linux/ftrace.h> extern struct bug_entry __start___bug_table[], __stop___bug_table[]; @@ -153,6 +154,8 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs) if (!bug) return BUG_TRAP_TYPE_NONE; + disable_trace_on_warning(); + file = NULL; line = 0; warning = 0; |