On Wed, Apr 30, 2025 at 09:32:07PM -0400, Steven Rostedt wrote:
> @@ -13100,13 +13269,20 @@ perf_event_alloc(struct perf_event_attr *attr, int 
> cpu,
>               }
>       }
>  
> +     /* Setup unwind deferring for per CPU events */
> +     if (event->attr.defer_callchain && !task) {
> +             err = perf_add_unwind_deferred(event);
> +             if (err)
> +                     return ERR_PTR(err);
> +     }
> +
>       err = security_perf_event_alloc(event);
>       if (err)
>               return ERR_PTR(err);

It seems perf_remove_unwind_deferred() is not called from
__free_event() - with double underscores.

Thanks,
Namhyung


>  
>       if (event->attr.defer_callchain)
>               init_task_work(&event->pending_unwind_work,
> -                            perf_event_callchain_deferred);
> +                            perf_event_deferred_task);
>  
>       /* symmetric to unaccount_event() in _free_event() */
>       account_event(event);
> -- 
> 2.47.2
> 
> 

Reply via email to