of/irq: add missing of_node_put() for interrupt parent node
[linux-2.6-block.git] / 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);