[U-Boot] [PATCH 3/7] JFFS2: Calculate buf_len before we read data from flash

Baidu Liu liucai.lfn at gmail.com
Sat Apr 30 02:48:23 CEST 2011


Hi, Detlev :

2011/4/30 Detlev Zundel <dzu at denx.de>:
> Hi Baidu,
>
> [...]
>
>>>> diff --git a/fs/jffs2/jffs2_1pass.c b/fs/jffs2/jffs2_1pass.c
>>>> index 8eb77b1..be6ac78 100644
>>>> --- a/fs/jffs2/jffs2_1pass.c
>>>> +++ b/fs/jffs2/jffs2_1pass.c
>>>> @@ -1643,6 +1643,8 @@ jffs2_1pass_build_lists(struct part_info * part)
>>>>                       case JFFS2_NODETYPE_INODE:
>>>>                               if (buf_ofs + buf_len < ofs + sizeof(struct
>>>>                                                       jffs2_raw_inode)) {
>>>> +                                     buf_len = min_t(uint32_t, buf_size, sector_ofs
>>>> +                                             + part->sector_size - ofs);
>>>
>>> I am somewhat uncomfortable that "buf_len" is used in the if condition
>>> before it is recalculated inside.  Are you sure that this cannot lead to
>>> problems, i.e. can buf_len become larger than it was when entering the
>>> condition?
>>
>> It works well in my boards.
>
> Aha.  I am all happy for you that this works, but we really need to be
> as sure as we can be that the code does the right thing.  "It works for
> me" is not enough.

Please read every line code in the uboot jffs2 carefully. Know more about JFFS2.


More information about the U-Boot mailing list