mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
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>
This commit is contained in:
parent
d1f1810677
commit
e793e2c0f1
|
|
@ -1612,6 +1612,10 @@ struct dso *dso__get(struct dso *dso)
|
|||
|
||||
void dso__put(struct dso *dso)
|
||||
{
|
||||
#ifdef REFCNT_CHECKING
|
||||
if (dso && dso__data(dso) && refcount_read(&RC_CHK_ACCESS(dso)->refcnt) == 2)
|
||||
dso__data_close(dso);
|
||||
#endif
|
||||
if (dso && refcount_dec_and_test(&RC_CHK_ACCESS(dso)->refcnt))
|
||||
dso__delete(dso);
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user