tracing: Apply soft-disabled and filter to tracepoints printk
authorMasami Hiramatsu <mhiramat@kernel.org>
Fri, 10 Jan 2020 16:05:18 +0000 (01:05 +0900)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Mon, 13 Jan 2020 18:19:40 +0000 (13:19 -0500)
Apply soft-disabled and the filter rule of the trace events to
the printk output of tracepoints (a.k.a. tp_printk kernel parameter)
as same as trace buffer output.

Link: http://lkml.kernel.org/r/157867231876.17873.15825819592284704068.stgit@devnote2
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace.c

index b4a07d7ed82a7331295bcf9be4e9d71f458cc346..b4294eb020f89688ee06b6b41f260ce31b5fd3ec 100644 (file)
@@ -2610,6 +2610,7 @@ static DEFINE_MUTEX(tracepoint_printk_mutex);
 static void output_printk(struct trace_event_buffer *fbuffer)
 {
        struct trace_event_call *event_call;
+       struct trace_event_file *file;
        struct trace_event *event;
        unsigned long flags;
        struct trace_iterator *iter = tracepoint_print_iter;
@@ -2623,6 +2624,12 @@ static void output_printk(struct trace_event_buffer *fbuffer)
            !event_call->event.funcs->trace)
                return;
 
+       file = fbuffer->trace_file;
+       if (test_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &file->flags) ||
+           (unlikely(file->flags & EVENT_FILE_FL_FILTERED) &&
+            !filter_match_preds(file->filter, fbuffer->entry)))
+               return;
+
        event = &fbuffer->trace_file->event_call->event;
 
        spin_lock_irqsave(&tracepoint_iter_lock, flags);