UBI: fix rb_tree node comparison in add_map commit buggy?

Richard Weinberger richard at nod.at
Mon Jun 23 12:07:01 PDT 2014


Am 23.06.2014 15:05, schrieb Heiko Schocher:
> Hello Richard,
> 
> Am 23.06.2014 14:41, schrieb Richard Weinberger:
>> Am 23.06.2014 13:04, schrieb Heiko Schocher:
>>> I tried this patch also in the U-Boot code, without getting a ubifs
>>> rootfs (burned with u-boot into the ubi volume) bootable in linux ...
>>> which worked before... maybe v3.14 and v3.16-rc1 are not compatible?
>>> Do anybody know from such problems?
>>>
>>> If I revert commit 604b592e6fd3c98f21435e1181ba7723ffc24715 in
>>> Linux v3.16-rc1 only (so I have the same code in U-Boot at this
>>> place), I can boot Linux with the ubifs based rootfs, and after
>>> a reboot the U-Boot ubi attach time is short ... all works fine,
>>> as I can see it ...
>>>
>>> If I make in U-Boot and Linux in following patch [1]:
>>> $ git diff
>>> diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c
>>> index b04e7d0..72f39da 100644
>>> --- a/drivers/mtd/ubi/fastmap.c
>>> +++ b/drivers/mtd/ubi/fastmap.c
>>> @@ -125,7 +125,7 @@ static struct ubi_ainf_volume *add_vol(struct ubi_attach_info *ai, int vol_id,
>>>                  parent = *p;
>>>                  av = rb_entry(parent, struct ubi_ainf_volume, rb);
>>>
>>> -               if (vol_id<  av->vol_id)
>>> +               if (vol_id>  av->vol_id)
>>>                          p =&(*p)->rb_left;
>>>                  else
>>>                          p =&(*p)->rb_right;
>>> $
>>
>> "Found" your patch. ;)
>> Looks like I need new glasses.
> 
> ;-)
> 
>> Yes, it looks correct as the logic is now balanced with the logic in ubi_find_av().
> 
> Ah, yes, right! So should I post a correct patch for this?

I think it would be better to "fix" the whole logic such that low volume ids go into
the left rb node instead of the right.
Just to avoid further confusion.
Artem, do you know why UBI does it the other way around for volume ids?

Thanks,
//richard



More information about the linux-mtd mailing list