diff options
| author | Eliav Farber <farbere@amazon.com> | 2026-10-11 05:04:43 +0000 |
|---|---|---|
| committer | Thomas Gleixner <tglx@kernel.org> | 2026-10-15 14:25:06 +0200 |
| commit | 455c9664aa6940b44a4d0e92f6a5850afb1d8435 (patch) | |
| tree | e53b452d449e1b0e3ca4fbdb1aece1d4a4a221bd /scripts/Makefile.thinlto | |
| parent | da0b1e5f7a124c5c506baef32ed7a90aa03cf516 (diff) | |
| download | linux-455c9664aa6940b44a4d0e92f6a5850afb1d8435.tar.gz linux-455c9664aa6940b44a4d0e92f6a5850afb1d8435.zip | |
irqchip/al-fic: Keep the device_node instead of a cached name string
struct al_fic cached a const char *name that al_fic_wire_init() set
from node->name. That string pointed into the device_node, so the
driver already depended on the node outliving init, but nothing in the
struct said so.
Keep the device_node itself and derive the name where it is needed. The
dependency does not go away: of_node_full_name() also returns a pointer
into the node, and irq_alloc_domain_generic_chips() keeps the string it
is given.
The driver therefore needs its own reference. of_irq_init() holds one
across the init callback, but since commit 30724547b221 ("of/irq: Fix
remaining refcount leaks in of_irq_init()") it drops that reference
again when it drains its parent list. Take a reference where the
pointer is stored and drop it on the error path. The driver is
__init-only with no teardown, so on success it is held for the life of
the system.
Deriving the name this way also changes the generic chip name from the
bare node name (e.g. "interrupt-controller") to the full name including
the unit address (e.g. "interrupt-controller@fd8a8500"), which keeps
instances that share a bare name distinguishable.
Signed-off-by: Eliav Farber <farbere@amazon.com>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Reviewed-by: Radu Rendec <radu@rendec.net>
Link: https://patch.msgid.link/20261011050449.41903-5-farbere@amazon.com
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
