[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