On Fri, 26 Jul 2024 14:42:08 -0400
Steven Rostedt <rost...@goodmis.org> wrote:

> From: Steven Rostedt <rost...@goodmis.org>
> 
> Instead of using an atomic counter for the trace_event_file reference
> counter, use the refcount interface. It has various checks to make sure
> the reference counting is correct, and will warn if it detects an error
> (like refcount_inc() on '0').
> 
> Signed-off-by: Steven Rostedt (Google) <rost...@goodmis.org>

Looks good to me.

Masami Hiramatsu (Google) <mhira...@kernel.org>

Thanks,

> ---
>  include/linux/trace_events.h | 2 +-
>  kernel/trace/trace_events.c  | 8 ++++----
>  2 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h
> index 9df3e2973626..fed58e54f15e 100644
> --- a/include/linux/trace_events.h
> +++ b/include/linux/trace_events.h
> @@ -680,7 +680,7 @@ struct trace_event_file {
>        * caching and such. Which is mostly OK ;-)
>        */
>       unsigned long           flags;
> -     atomic_t                ref;    /* ref count for opened files */
> +     refcount_t              ref;    /* ref count for opened files */
>       atomic_t                sm_ref; /* soft-mode reference counter */
>       atomic_t                tm_ref; /* trigger-mode reference counter */
>  };
> diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
> index 852643d957de..81ade9ddcbe5 100644
> --- a/kernel/trace/trace_events.c
> +++ b/kernel/trace/trace_events.c
> @@ -992,18 +992,18 @@ static void remove_subsystem(struct trace_subsystem_dir 
> *dir)
>  
>  void event_file_get(struct trace_event_file *file)
>  {
> -     atomic_inc(&file->ref);
> +     refcount_inc(&file->ref);
>  }
>  
>  void event_file_put(struct trace_event_file *file)
>  {
> -     if (WARN_ON_ONCE(!atomic_read(&file->ref))) {
> +     if (WARN_ON_ONCE(!refcount_read(&file->ref))) {
>               if (file->flags & EVENT_FILE_FL_FREED)
>                       kmem_cache_free(file_cachep, file);
>               return;
>       }
>  
> -     if (atomic_dec_and_test(&file->ref)) {
> +     if (refcount_dec_and_test(&file->ref)) {
>               /* Count should only go to zero when it is freed */
>               if (WARN_ON_ONCE(!(file->flags & EVENT_FILE_FL_FREED)))
>                       return;
> @@ -2999,7 +2999,7 @@ trace_create_new_event(struct trace_event_call *call,
>       atomic_set(&file->tm_ref, 0);
>       INIT_LIST_HEAD(&file->triggers);
>       list_add(&file->list, &tr->events);
> -     event_file_get(file);
> +     refcount_set(&file->ref, 1);
>  
>       return file;
>  }
> -- 
> 2.43.0
> 


-- 
Masami Hiramatsu (Google) <mhira...@kernel.org>

Reply via email to