diff options
Diffstat (limited to 'kernel/trace/trace_events.c')
| -rw-r--r-- | kernel/trace/trace_events.c | 24 | 
1 files changed, 15 insertions, 9 deletions
| diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 4021b9a79f93..3147614c1812 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -2678,12 +2678,24 @@ static struct trace_event_file *  trace_create_new_event(struct trace_event_call *call,  		       struct trace_array *tr)  { +	struct trace_pid_list *no_pid_list; +	struct trace_pid_list *pid_list;  	struct trace_event_file *file; +	unsigned int first;  	file = kmem_cache_alloc(file_cachep, GFP_TRACE);  	if (!file)  		return NULL; +	pid_list = rcu_dereference_protected(tr->filtered_pids, +					     lockdep_is_held(&event_mutex)); +	no_pid_list = rcu_dereference_protected(tr->filtered_no_pids, +					     lockdep_is_held(&event_mutex)); + +	if (!trace_pid_list_first(pid_list, &first) || +	    !trace_pid_list_first(no_pid_list, &first)) +		file->flags |= EVENT_FILE_FL_PID_FILTER; +  	file->event_call = call;  	file->tr = tr;  	atomic_set(&file->sm_ref, 0); @@ -3449,10 +3461,8 @@ create_event_toplevel_files(struct dentry *parent, struct trace_array *tr)  	entry = trace_create_file("enable", TRACE_MODE_WRITE, d_events,  				  tr, &ftrace_tr_enable_fops); -	if (!entry) { -		pr_warn("Could not create tracefs 'enable' entry\n"); +	if (!entry)  		return -ENOMEM; -	}  	/* There are not as crucial, just warn if they are not created */ @@ -3468,17 +3478,13 @@ create_event_toplevel_files(struct dentry *parent, struct trace_array *tr)  		pr_warn("Could not create tracefs 'set_event_notrace_pid' entry\n");  	/* ring buffer internal formats */ -	entry = trace_create_file("header_page", TRACE_MODE_READ, d_events, +	trace_create_file("header_page", TRACE_MODE_READ, d_events,  				  ring_buffer_print_page_header,  				  &ftrace_show_header_fops); -	if (!entry) -		pr_warn("Could not create tracefs 'header_page' entry\n"); -	entry = trace_create_file("header_event", TRACE_MODE_READ, d_events, +	trace_create_file("header_event", TRACE_MODE_READ, d_events,  				  ring_buffer_print_entry_header,  				  &ftrace_show_header_fops); -	if (!entry) -		pr_warn("Could not create tracefs 'header_event' entry\n");  	tr->event_dir = d_events; |