All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
To: Eugene Mavick <m@mavick.dev>
Cc: Will Deacon <will@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Boqun Feng <boqun@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>, Gary Guo <gary@garyguo.net>,
	Steven Rostedt <rostedt@goodmis.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>,
	Christoph Lameter <cl@gentwo.org>,
	linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
	linux-mm@kvack.org
Subject: Re: [PATCH v4 0/5] tracing: add ref_trace_final_put tracing
Date: Mon, 3 Aug 2026 21:40:06 +0900	[thread overview]
Message-ID: <20260803214006.d6e03e8fe220694709125157@kernel.org> (raw)
In-Reply-To: <20260801-refcount-final-put-trace-v4-0-2e58678f0ffd@mavick.dev>

On Sat, 01 Aug 2026 18:59:40 +0800
Eugene Mavick <m@mavick.dev> wrote:

> When debugging use-after-free(UAF) bugs, knowing when the object reaches
> 0 references and enters final release can significantly aid the
> debugging process.
> 
> There is currently no universal way to trace this information.
> 
> This patch series implements tracing of the final puts in the
> most widely used refcounting implementations,
> refcount_t(and thus kref which uses it), and percpu-ref.
> 

I have a question regarding the event group name. If this is related to
refcount, wouldn't it be more appropriate to call it `refcount_final_put`?
Even if it is currently used by `ref_trace`, it is fundamentally an event
belonging to the refcount subsystem.
I believe event names should be based on where the event occurs and what
actually happens, rather than on who is using it.

Thank you,

> The tracepoint records three fields:
> - caller: function that called the refcounting
>   function(refcount_sub_and_test, percpu_ref_put_many)
> - ip: return address of the trace wrapper macro call
> - obj: refcount object(struct percpu_ref, refcount_t)
> 
> Signed-off-by: Eugene Mavick <m@mavick.dev>
> ---
> Changes in v4:
> ref-trace:
> -remove fn
> -add ip variable
> -change trace wrapper macro respectively, _THIS_IP_ is used for ip variable
> -change relevant code respect to fn removal and ip addition
> -fix style issues in include/linux/ref_trace.h
> -add new macro do_trace_ref_final_put_cond that only calls tracepoint if cond is
>  true
> lib/refcount.c:
> -change from do_trace_ref_final_put to *_cond
> -remove if statement above since _cond already performs the check
> KUnit:
> -change relevant code respect to fn removal and ip addition
> -check if caller and ip are valid addresses
> -change timeout from 10 jiffies to 10 seconds
> -move didn't timeout assertion from before to after probe
>  unregistration, to prevent it from impacting next test
> 
> Changes in v3:
> include/trace/events/ref_trace.h kernel doc comments:
> -caller of refcount function -> return address of refcount function
> -ref_trace_final_put->do_ref_trace_final_put
> lib/ref_trace.c: add include trace/events/ref_trace.h
> kunit:
> -change Kconfig depends from FTRACE->TRACEPOINTS
> -EXPECT_FALSE->ASSERT_FALSE for calling percpu_ref_init
> -add tracepoint_synchronise_unregister to test_exit macro
> -added timeout to capture.count waiting
> -remove noinline and __always_inline from function attributes
>  (added for testing, but accidentally submitted)
> -add period to the end of Kconfig help text
> v2 link:
> https://lore.kernel.org/all/20260710-refcount-final-put-trace-v2-0-557cfce860a2@mavick.dev/
> 
> Changes in v2:
> -include/linux/ref_trace.h: change macro name, use direct tracepoint
>  call in macro to avoid double check
> -add tracepoint to refcount_dec_if_one
> -kunit: make significant improvements to design, fix critical bug, add test case for
>  refcount_dec_if_one()
> -Link to v1: https://lore.kernel.org/r/20260705-refcount-final-put-trace-v1-0-0ae936edb750@mavick.dev
> 
> ---
> Eugene Mavick (5):
>       tracing: add ref_trace_final_put tracepoint
>       refcount: add ref_trace_final_put tracepoint
>       percpu-refcount: add ref_trace_final_put trace
>       kunit: add test for ref_trace_final_put
>       MAINTAINERS: add entries for ref_trace_final_put
> 
>  MAINTAINERS                      |   3 +
>  include/linux/percpu-refcount.h  |   5 +-
>  include/linux/ref_trace.h        |  40 +++++++++++
>  include/linux/refcount.h         |   2 +
>  include/trace/events/ref_trace.h |  51 ++++++++++++++
>  lib/Kconfig                      |  10 +++
>  lib/Makefile                     |   2 +
>  lib/ref_trace.c                  |  13 ++++
>  lib/refcount.c                   |   6 +-
>  lib/tests/Makefile               |   1 +
>  lib/tests/ref_trace_kunit.c      | 141 +++++++++++++++++++++++++++++++++++++++
>  11 files changed, 272 insertions(+), 2 deletions(-)
> ---
> base-commit: df685633c3dbc67441cc86f1c3fee58de4652ba2
> change-id: 20260624-refcount-final-put-trace-49bd7c39bd5a
> 
> Best regards,
> -- 
> Eugene Mavick <m@mavick.dev>
> 
> 


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

      parent reply	other threads:[~2026-08-03 12:40 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-01 10:59 [PATCH v4 0/5] tracing: add ref_trace_final_put tracing Eugene Mavick
2026-08-01 10:59 ` [PATCH v4 1/5] tracing: add ref_trace_final_put tracepoint Eugene Mavick
2026-08-01 10:59 ` [PATCH v4 2/5] refcount: " Eugene Mavick
2026-08-01 10:59 ` [PATCH v4 3/5] percpu-refcount: add ref_trace_final_put trace Eugene Mavick
2026-08-01 10:59 ` [PATCH v4 4/5] kunit: add test for ref_trace_final_put Eugene Mavick
2026-08-01 10:59 ` [PATCH v4 5/5] MAINTAINERS: add entries " Eugene Mavick
2026-08-03  8:37 ` [PATCH v4 0/5] tracing: add ref_trace_final_put tracing Peter Zijlstra
2026-08-03 16:00   ` Eugene Mavick
2026-08-03 12:40 ` Masami Hiramatsu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260803214006.d6e03e8fe220694709125157@kernel.org \
    --to=mhiramat@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=boqun@kernel.org \
    --cc=cl@gentwo.org \
    --cc=dennis@kernel.org \
    --cc=gary@garyguo.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=m@mavick.dev \
    --cc=mark.rutland@arm.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tj@kernel.org \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.