[U-Boot] [RFC PATCH] ext4: Fix comparision of unsigned expression with < 0
Lokesh Vutla
lokeshvutla at ti.com
Wed Apr 26 11:29:03 UTC 2017
On Wednesday 26 April 2017 04:54 PM, Tom Rini wrote:
> On Wed, Apr 26, 2017 at 08:56:49AM +0530, Lokesh Vutla wrote:
>>
>>
>> On Tuesday 25 April 2017 11:34 PM, Tom Rini wrote:
>>> On Tue, Apr 25, 2017 at 10:22:27AM +0530, Lokesh Vutla wrote:
>>>> In file ext4fs.c funtion ext4fs_read_file() compares an
>>>> unsigned expression with < 0 like below
>>>>
>>>> lbaint_t blknr;
>>>> blknr = read_allocated_block(&(node->inode), i);
>>>> if (blknr < 0)
>>>> return -1;
>>>>
>>>> blknr is of type ulong/uint64_t. read_allocated_block() returns
>>>> long int. So comparing blknr with < 0 will always be false. Instead
>>>> declare blknr as long int.
>>>>
>>>> Reported-by: Sunita Nadampalli <sunitan at ti.com>
>>>> Signed-off-by: Lokesh Vutla <lokeshvutla at ti.com>
>>>> ---
>>>> fs/ext4/ext4fs.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/fs/ext4/ext4fs.c b/fs/ext4/ext4fs.c
>>>> index 7187dcfb05..081509dbb4 100644
>>>> --- a/fs/ext4/ext4fs.c
>>>> +++ b/fs/ext4/ext4fs.c
>>>> @@ -71,7 +71,7 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,
>>>> blockcnt = lldiv(((len + pos) + blocksize - 1), blocksize);
>>>>
>>>> for (i = lldiv(pos, blocksize); i < blockcnt; i++) {
>>>> - lbaint_t blknr;
>>>> + long int blknr;
>>>> int blockoff = pos - (blocksize * i);
>>>> int blockend = blocksize;
>>>> int skipfirst = 0;
>>>
>>> My only question is, did you catch that by inspection, clang, or a newer
>>
>> This is reported by Sunita and not sure how she caught it.
>
> OK. Because if she's got clang used on a TI platform and linking and
> booting, I'd very much like to hear what else is required, or if
> nothing, what version of the tools she's using, so I can put that into
> my CI loop. I didn't have luck when I tried last, but it was a while
> ago.
Sure, Ill update you on this with more details.
Thanks and regards,
Lokesh
>
>>> than gcc-6.3 warning? Also, fs/ext4/dev.c:63 is a similar problem, if
>>> you'd like to non-RFC a v2. Thanks!
>>
>> In this case do you want me to drop the check or change lbaint_t to long
>> int and update the argument type cast where ever ext4fs_devread() is called?
>
> Just drop it I think, thanks.
>
More information about the U-Boot
mailing list