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