If blocks count is exactly 1<<32, then the code computing number of inode count in ext2fs_initialize() will overflow and set number of inodes to 0 (which will be later fixed up to EXT2_FIRST_INODE(super)+1). Fix the off-by-one bug in the check. Reviewed-by: Andreas Dilger <adilger@xxxxxxxxx> Signed-off-by: Jan Kara <jack@xxxxxxx> --- lib/ext2fs/initialize.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c index dbe798b27826..e1eff22eac33 100644 --- a/lib/ext2fs/initialize.c +++ b/lib/ext2fs/initialize.c @@ -295,7 +295,7 @@ retry: i = fs->blocksize >= 4096 ? 1 : 4096 / fs->blocksize; if (ext2fs_has_feature_64bit(super) && - (ext2fs_blocks_count(super) / i) > (1ULL << 32)) + (ext2fs_blocks_count(super) / i) >= (1ULL << 32)) set_field(s_inodes_count, ~0U); else set_field(s_inodes_count, ext2fs_blocks_count(super) / i); -- 2.13.7