]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
perf sched: Fix thread reference leaks in timehist_get_thread()
authorArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 4 Jun 2026 21:18:05 +0000 (18:18 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 4 Jun 2026 22:17:36 +0000 (19:17 -0300)
commitfa20c1f8f4e094abe0169d39fce8181bc26d6dab
treea0bec0441058e746cc216e87c6b570b4e9638154
parent1e7921d7227de5da0dfc167943092c823ec7e49b
perf sched: Fix thread reference leaks in timehist_get_thread()

timehist_get_thread() acquires a thread reference via
machine__findnew_thread() and an idle thread reference via
get_idle_thread() (which calls thread__get()).  Two error paths in
the idle_hist block return NULL without releasing these references:

 - When get_idle_thread() fails, the thread reference leaks.
 - When thread__priv(idle) returns NULL, both idle and thread leak.

Additionally, the idle thread reference acquired on the success path
is never released, leaking a reference on every sample when
--idle-hist is active.

Add thread__put() calls on both error paths and release the idle
reference after use on the success path.

Fixes: 5d8f17fb5822 ("perf sched timehist: Add -I/--idle-hist option")
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-sched.c