Proposed prom parse fix + moving.

Michal Simek monstr at monstr.eu
Fri Apr 17 22:59:17 EST 2009


Grant Likely wrote:
> 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.

ok.
Ilpo: Can you create patch for both architectures?

Thanks,
Michal


> 
>> 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
>>
> 
> 
> 


-- 
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854



More information about the Linuxppc-dev mailing list