On Fri, Sep 19, 2025 at 12:06:52PM -0400, Sean Anderson wrote:
If registering the CPU map fails, we need to put the fwnode. free_percpu works when called with a NULL pointer, so just use coresight_device_release.
Fixes: 5ad628a76176 ("coresight: Use per-sink trace ID maps for Perf sessions") Signed-off-by: Sean Anderson sean.anderson@linux.dev
I have a patch that fixes the same issue:
https://lore.kernel.org/linux-arm-kernel/20250512154108.23920-2-leo.yan@arm....
The difference in my patch is about the sequence: first it allocates the resource, then increases the fw node's reference count. During release, it first decreases the reference count, and then safely releases the resource.
After comparing your patch, I still think the above reason is valid.
That said, I agree we should put this fixing before the panic notifier fix. This would be friendly for backporting.
Thanks, Leo
Changes in v4:
- New
drivers/hwtracing/coresight/coresight-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/hwtracing/coresight/coresight-core.c b/drivers/hwtracing/coresight/coresight-core.c index fa758cc21827..022c8384b98d 100644 --- a/drivers/hwtracing/coresight/coresight-core.c +++ b/drivers/hwtracing/coresight/coresight-core.c @@ -1352,7 +1352,7 @@ struct coresight_device *coresight_register(struct coresight_desc *desc) raw_spin_lock_init(&csdev->perf_sink_id_map.lock); csdev->perf_sink_id_map.cpu_map = alloc_percpu(atomic_t); if (!csdev->perf_sink_id_map.cpu_map) {
kfree(csdev);
}coresight_device_release(&csdev->dev); ret = -ENOMEM; goto err_out;
-- 2.35.1.1320.gc452695387.dirty