perf dso: With ref count checking, avoid dso_data holding dso live
authorIan Rogers <irogers@google.com>
Tue, 24 Jun 2025 19:03:24 +0000 (12:03 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Thu, 3 Jul 2025 02:05:27 +0000 (19:05 -0700)
commite793e2c0f188fb7a7998224f14241c0d87df5249
treecbc1080a3b827151f39bca664a1c74c363c728b1
parentd1f18106778b4d1af5ca6bde191e05e075c7e697
perf dso: With ref count checking, avoid dso_data holding dso live

With the dso_data embedded in a dso there is a reference counted
pointer to the dso rather than using container_of with reference count
checking. This data can hold the dso live meaning that no dso__put
ever deletes it. Add a check for this case and close the dso_data when
it happens. There isn't an infinite loop as the dso_data clears the
file descriptor prior to putting on the dso.

Signed-off-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250624190326.2038704-5-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/dso.c