Re: [PATCH 09/16] irqchip/econet: clean up VEIC initialization

From: Caleb James DeLisle

Date: Wed Jul 22 2026 - 21:13:25 EST



On 14/07/2026 15:24, Haofeng Li wrote:
From: Haofeng Li <lihaofeng@xxxxxxxxxx>

When cpu_has_veic is set, econet_cpu_init() failure returns without
tearing down the already created IRQ domain, ioremap, memory region,
or parent IRQ mapping. The parent interrupt-controller node obtained
while finding the IPI domain also retains an OF node reference on both
success and failure.

Drop the parent node reference after the domain lookup and route VEIC
initialization failures through the existing resource cleanup labels
after removing the IRQ domain.

Fixes: 2ee2a685ee83 ("irqchip/econet-en751221: Support MIPS 34Kc VEIC mode")

Signed-off-by: Haofeng Li <lihaofeng@xxxxxxxxxx>
Tested-by: Caleb James DeLisle <cjd@xxxxxxxx>
---
drivers/irqchip/irq-econet-en751221.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-econet-en751221.c b/drivers/irqchip/irq-econet-en751221.c
index 2ca5d901866f..f6f890b3f881 100644
--- a/drivers/irqchip/irq-econet-en751221.c
+++ b/drivers/irqchip/irq-econet-en751221.c
@@ -378,6 +378,7 @@ static int __init econet_cpu_init(struct device_node *node)
}
econet_intc.ipi_domain = irq_find_matching_host(parent_intc, DOMAIN_BUS_IPI);
+ of_node_put(parent_intc);
if (!econet_intc.ipi_domain) {
pr_err("%pOF: Failed to find parent %s\n", node, "IPI domain");
return -ENODEV;
@@ -459,7 +460,7 @@ static int __init econet_intc_of_init(struct device_node *node, struct device_no
ret = econet_cpu_init(node);
if (ret)
- return ret;
+ goto err_remove_domain;
} else {
irq_set_chained_handler_and_data(irq, econet_intc_from_parent, domain);
}
@@ -468,6 +469,8 @@ static int __init econet_intc_of_init(struct device_node *node, struct device_no
return 0;
+err_remove_domain:
+ irq_domain_remove(domain);
err_unmap:
iounmap(econet_intc.membase);
err_release: