[PATCH v2 4/9] coresight: etm-perf: Fix sink device reference leak in etm_setup_aux()

From: James Clark

Date: Wed Nov 04 2026 - 10:48:38 EST


coresight_get_sink_by_id() returns the sink with a reference taken by
bus_find_device(), but etm_setup_aux() never drops it. The paths built
for each CPU take their own references on the sink, so drop the lookup
reference before returning on both the success and error paths.

Fixes: 226443925887 ("coresight: Use event attributes for sink selection")
Reported-by: Sashiko <sashiko-bot@xxxxxxxxxx>
Closes: https://sashiko.dev/#/bug/linux-89fe1ee7-7e2f-4c78-a8e6-93a1a260015b
Signed-off-by: James Clark <james.clark@xxxxxxxxxx>
---
drivers/hwtracing/coresight/coresight-etm-perf.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c
index 86ec4708b7e4..bd302ed1543a 100644
--- a/drivers/hwtracing/coresight/coresight-etm-perf.c
+++ b/drivers/hwtracing/coresight/coresight-etm-perf.c
@@ -511,10 +511,14 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
if (!event_data->snk_config)
goto err;

+ if (user_sink)
+ put_device(&user_sink->dev);
mutex_unlock(&coresight_mutex);
return event_data;

err:
+ if (user_sink)
+ put_device(&user_sink->dev);
mutex_unlock(&coresight_mutex);
etm_free_aux(event_data);
return NULL;

--
2.43.0