of/irq: add missing of_node_put() for interrupt parent node
authorClément Léger <clement.leger@bootlin.com>
Tue, 17 Jan 2023 14:49:29 +0000 (15:49 +0100)
committerRob Herring <robh@kernel.org>
Wed, 18 Jan 2023 17:31:42 +0000 (11:31 -0600)
After calling of_irq_parse_one(), the node provided in the of_phandle_args
has a refcount increment by one. Add missing of_node_put in of_irq_get()
to decrement the refcount once used.

Signed-off-by: Clément Léger <clement.leger@bootlin.com>
Link: https://lore.kernel.org/r/20230117144929.423089-1-clement.leger@bootlin.com
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/irq.c

index e9bf5236ed892765f33a1ae4e8ff6c8b0ab53aca..174900072c18cd7c255fe603c68966a1ca7ea4fb 100644 (file)
@@ -438,10 +438,16 @@ int of_irq_get(struct device_node *dev, int index)
                return rc;
 
        domain = irq_find_host(oirq.np);
-       if (!domain)
-               return -EPROBE_DEFER;
+       if (!domain) {
+               rc = -EPROBE_DEFER;
+               goto out;
+       }
 
-       return irq_create_of_mapping(&oirq);
+       rc = irq_create_of_mapping(&oirq);
+out:
+       of_node_put(oirq.np);
+
+       return rc;
 }
 EXPORT_SYMBOL_GPL(of_irq_get);