On Tue, Mar 17, 2015 at 5:21 PM, Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> wrote: > The error code paths that require cleanup use a goto to jump to the > cleanup code and return an error code. However, the error code variable > res, which is initialized to -EINVAL when declared, is then overwritten > with the return value of of_parse_phandle_with_args(), and reused as the > return code from of_irq_parse_one(). This leads to an undetermined error > being returned instead of the expected -EINVAL value. Fix it. > > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> Applied. Thanks. Rob > --- > drivers/of/irq.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/drivers/of/irq.c b/drivers/of/irq.c > index 0d7765807f49..1a7980692f25 100644 > --- a/drivers/of/irq.c > +++ b/drivers/of/irq.c > @@ -290,7 +290,7 @@ int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_ar > struct device_node *p; > const __be32 *intspec, *tmp, *addr; > u32 intsize, intlen; > - int i, res = -EINVAL; > + int i, res; > > pr_debug("of_irq_parse_one: dev=%s, index=%d\n", of_node_full_name(device), index); > > @@ -323,15 +323,19 @@ int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_ar > > /* Get size of interrupt specifier */ > tmp = of_get_property(p, "#interrupt-cells", NULL); > - if (tmp == NULL) > + if (tmp == NULL) { > + res = -EINVAL; > goto out; > + } > intsize = be32_to_cpu(*tmp); > > pr_debug(" intsize=%d intlen=%d\n", intsize, intlen); > > /* Check index */ > - if ((index + 1) * intsize > intlen) > + if ((index + 1) * intsize > intlen) { > + res = -EINVAL; > goto out; > + } > > /* Copy intspec into irq structure */ > intspec += index * intsize; > -- > Regards, > > Laurent Pinchart > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html