diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2026-06-05 11:17:03 -0300 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2026-06-05 19:17:31 -0300 |
| commit | a99d6394cd48fed75b1d24733d5afe6837a61a3f (patch) | |
| tree | 32edfd619183beccaa6724fe1bb2ac8e4124df47 | |
| parent | 662d56d48e527ee21a0b03082ee318258a6f7919 (diff) | |
| download | linux-stable-a99d6394cd48fed75b1d24733d5afe6837a61a3f.tar.gz linux-stable-a99d6394cd48fed75b1d24733d5afe6837a61a3f.zip | |
perf sched: Use thread__put() in free_idle_threads()
free_idle_threads() calls thread__delete() directly instead of
thread__put(), bypassing the reference counting lifecycle. Under
REFCNT_CHECKING builds, this leaks the pointer handle since
thread__delete() frees the object without going through the refcount
wrapper.
The idle threads are created via thread__new() (refcount=1) in
get_idle_thread(). Callers get additional references via thread__get()
which they release with thread__put(). free_idle_threads() drops the
base reference — thread__put() is the correct call, matching the
thread__new() acquisition.
Fixes: 49394a2a24c7 ("perf sched timehist: Introduce timehist command")
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
| -rw-r--r-- | tools/perf/builtin-sched.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index c0cd3cbb602a..732c65008a8a 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c @@ -2481,7 +2481,7 @@ static void free_idle_threads(void) if (itr) thread__put(itr->last_thread); - thread__delete(idle); + thread__put(idle); } } |
