From: Ilpo Järvinen Date: Mon, 20 Apr 2009 18:18:43 +0000 (-0600) Subject: powerpc: Fix of_node_put() exit path in of_irq_map_one() X-Git-Tag: v2.6.30-rc4~9^2~14^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6d25b688ecc488753af3c9e6f6a9a575b863cf37;p=platform%2Fkernel%2Flinux-stable.git powerpc: Fix of_node_put() exit path in of_irq_map_one() Signed-off-by: Grant Likely --- diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c index 8f0856f..8362620 100644 --- a/arch/powerpc/kernel/prom_parse.c +++ b/arch/powerpc/kernel/prom_parse.c @@ -971,7 +971,7 @@ int of_irq_map_one(struct device_node *device, int index, struct of_irq *out_irq struct device_node *p; const u32 *intspec, *tmp, *addr; u32 intsize, intlen; - int res; + int res = -EINVAL; DBG("of_irq_map_one: dev=%s, index=%d\n", device->full_name, index); @@ -995,21 +995,20 @@ int of_irq_map_one(struct device_node *device, int index, struct of_irq *out_irq /* Get size of interrupt specifier */ tmp = of_get_property(p, "#interrupt-cells", NULL); - if (tmp == NULL) { - of_node_put(p); - return -EINVAL; - } + if (tmp == NULL) + goto out; intsize = *tmp; DBG(" intsize=%d intlen=%d\n", intsize, intlen); /* Check index */ if ((index + 1) * intsize > intlen) - return -EINVAL; + goto out; /* Get new specifier and map it */ res = of_irq_map_raw(p, intspec + index * intsize, intsize, addr, out_irq); +out: of_node_put(p); return res; }