Proposed prom parse fix + moving.
Grant Likely
grant.likely at secretlab.ca
Fri Apr 17 16:44:16 EST 2009
On Fri, Apr 17, 2009 at 12:08 AM, Michal Simek <monstr at monstr.eu> wrote:
> Hi All,
>
> I have got email from Ilpo about prom_parse file.
> I take this file from powerpc. Who did write prom_parse file and take care about?
Posting to the linuxppc-dev list is sufficient to start. There are
several people who may be interested.
> BTW: What about to move prom_parse file to any generic location as we discussed in past?
> Any volunteer?
I'm kind of working on it. More specifically, I'm looking at
factoring out fdt stuff into common code (drivers/of/of_fdt.c). But I
haven't made a whole lot of progress yet.
> -------- Original Message --------
> Subject: [RFC!] [PATCH] microblaze: fix bug in error handling
> Date: Thu, 16 Apr 2009 23:05:53 +0300 (EEST)
> From: Ilpo Järvinen <ilpo.jarvinen at helsinki.fi>
> To: monstr at monstr.eu
> CC: microblaze-uclinux at itee.uq.edu.au
>
> While some version of the patches were on the lkml I read
> some part of the code briefly through but my feedback got
> stuck into postponed emails, so here's one correctness
> related issue I might have found (the rest were just
> cosmetic things).
>
> I'm not sure if the latter return needs the of_node_put or not
> but it seems more likely than not.
Yes, it does. This change is applicable to
arch/powerpc/kernel/prom_parse.c too.
>
> Not even compile tested.
>
> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen at helsinki.fi>
> ---
> arch/microblaze/kernel/prom_parse.c | 11 +++++++----
> 1 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/arch/microblaze/kernel/prom_parse.c b/arch/microblaze/kernel/prom_parse.c
> index ae0352e..d1174bc 100644
> --- a/arch/microblaze/kernel/prom_parse.c
> +++ b/arch/microblaze/kernel/prom_parse.c
> @@ -927,20 +927,23 @@ int of_irq_map_one(struct device_node *device,
> /* Get size of interrupt specifier */
> tmp = of_get_property(p, "#interrupt-cells", NULL);
> if (tmp == NULL) {
> - of_node_put(p);
> - return -EINVAL;
> + res = -EINVAL;
> + goto out;
> }
> intsize = *tmp;
>
> pr_debug(" intsize=%d intlen=%d\n", intsize, intlen);
>
> /* Check index */
> - if ((index + 1) * intsize > intlen)
> - return -EINVAL;
> + if ((index + 1) * intsize > intlen) {
> + res = -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;
> }
> --
> 1.5.6.5
>
>
> --
> Michal Simek, Ing. (M.Eng)
> w: www.monstr.eu p: +42-0-721842854
>
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
More information about the Linuxppc-dev
mailing list