ext4: Fix comparision of unsigned expression with < 0
authorLokesh Vutla <lokeshvutla@ti.com>
Wed, 26 Apr 2017 11:28:22 +0000 (16:58 +0530)
committerTom Rini <trini@konsulko.com>
Thu, 27 Apr 2017 20:49:09 +0000 (16:49 -0400)
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.

Similarly ext4/dev.c does a similar comparison. Drop the redundant
comparison.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
fs/ext4/dev.c
fs/ext4/ext4fs.c

index ee84d3fbe182675582c546de8b4bf4f3ad78fe02..ae2ba6a9015c8bc3bd15cef9ca59a82680ddce33 100644 (file)
@@ -60,9 +60,8 @@ int ext4fs_devread(lbaint_t sector, int byte_offset, int byte_len, char *buf)
        }
 
        /* Check partition boundaries */
-       if ((sector < 0) ||
-           ((sector + ((byte_offset + byte_len - 1) >> log2blksz))
-            >= part_info->size)) {
+       if ((sector + ((byte_offset + byte_len - 1) >> log2blksz))
+           >= part_info->size) {
                printf("%s read outside partition " LBAFU "\n", __func__,
                       sector);
                return 0;
index 7187dcfb0565566f0f778bd2191df7093a19a2e1..081509dbb4db8927b6a8fa26342c39be8bb22284 100644 (file)
@@ -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;