tracing: Only allow trace_array_printk() to be used by instances
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 16 Jun 2020 18:53:55 +0000 (14:53 -0400)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Mon, 29 Jun 2020 13:01:02 +0000 (09:01 -0400)
To prevent default "trace_printks()" from spamming the top level tracing
ring buffer, only allow trace instances to use trace_array_printk() (which
can be used without the trace_printk() start up warning).

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace.c

index bb62269724d5f4f4953f7bee08d7edec4e8c69e5..8241d1448d708d032faac094ba4a81b668afeca6 100644 (file)
@@ -3346,12 +3346,16 @@ int trace_array_printk(struct trace_array *tr,
        int ret;
        va_list ap;
 
-       if (!(global_trace.trace_flags & TRACE_ITER_PRINTK))
-               return 0;
-
        if (!tr)
                return -ENOENT;
 
+       /* This is only allowed for created instances */
+       if (tr == &global_trace)
+               return 0;
+
+       if (!(tr->trace_flags & TRACE_ITER_PRINTK))
+               return 0;
+
        va_start(ap, fmt);
        ret = trace_array_vprintk(tr, ip, fmt, ap);
        va_end(ap);