mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 09:20:13 -04:00
of/irq: Fix device node refcount leak in of_irq_get_affinity()
of_irq_parse_one() raises the refcount of the interrupt controller node
on success, and of_irq_get_affinity() returns without putting it, so
every call past the parse leaks one reference. It is reached from
platform_get_irq_affinity(), used by arm_pmu, arm_spe_pmu and
coresight-trbe.
Put it once irq_populate_fwspec_info() has run: no in-tree
->get_fwspec_info() returns a mask that lives in the node.
Fixes: 5404f5c06d ("of/irq: Add interrupt affinity reporting interface")
Signed-off-by: Fuad Tabba <fuad.tabba@linux.dev>
Link: https://patch.msgid.link/20260826112234.1033974-1-fuad.tabba@linux.dev
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
This commit is contained in:
committed by
Rob Herring (Arm)
parent
660ee6792e
commit
fe66c3ff85
@@ -563,7 +563,9 @@ const struct cpumask *of_irq_get_affinity(struct device_node *dev, int index)
|
||||
of_phandle_args_to_fwspec(oirq.np, oirq.args, oirq.args_count,
|
||||
&fwspec);
|
||||
|
||||
if (irq_populate_fwspec_info(&fwspec, &info))
|
||||
rc = irq_populate_fwspec_info(&fwspec, &info);
|
||||
of_node_put(oirq.np);
|
||||
if (rc)
|
||||
return NULL;
|
||||
|
||||
return info.affinity;
|
||||
|
||||
Reference in New Issue
Block a user