Re: FAILED: patch "[PATCH] tracing: Check pid filtering when creating events" failed to apply to 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Nov 28, 2021 at 02:10:15PM -0500, Steven Rostedt wrote:
> On Sun, 28 Nov 2021 13:48:05 -0500
> Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> 
> > +++ b/kernel/trace/trace_events.c
> > @@ -2677,12 +2677,23 @@ 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;
> >  
> 
> And even though this was the first fix, I somehow got a bit of the 5.16
> patch in here, as the "first" variable is only used for that.
> 
> Take two:
> 
> From: "Steven Rostedt (VMware)" <rostedt@xxxxxxxxxxx>
> Subject: [PATCH] tracing: Check pid filtering when creating events
> 
> When pid filtering is activated in an instance, all of the events trace
> files for that instance has the PID_FILTER flag set. This determines
> whether or not pid filtering needs to be done on the event, otherwise the
> event is executed as normal.
> 
> If pid filtering is enabled when an event is created (via a dynamic event
> or modules), its flag is not updated to reflect the current state, and the
> events are not filtered properly.
> 
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: 3fdaf80f4a836 ("tracing: Implement event pid filtering")
> Signed-off-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>
> ---
>  kernel/trace/trace_events.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> Index: linux-test.git/kernel/trace/trace_events.c
> ===================================================================
> --- linux-test.git.orig/kernel/trace/trace_events.c
> +++ linux-test.git/kernel/trace/trace_events.c
> @@ -2462,12 +2462,22 @@ 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;
>  
>  	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 (pid_list || no_pid_list)
> +		file->flags |= EVENT_FILE_FL_PID_FILTER;
> +
>  	file->event_call = call;
>  	file->tr = tr;
>  	atomic_set(&file->sm_ref, 0);

Oops, now I see this one, thanks...

greg "read the whole thread before reponding" k-h



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux