[U-Boot] [RFC PATCH] ext4: Fix comparision of unsigned expression with < 0

Tom Rini trini at konsulko.com
Tue Apr 25 18:04:47 UTC 2017


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
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!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170425/ab14bb56/attachment.sig>


More information about the U-Boot mailing list