From: Theodore Ts'o Date: Fri, 8 Jul 2011 02:29:00 +0000 (-0400) Subject: libext2fs: don't hang in ext2fs_new_block2() on a full bigalloc file system X-Git-Tag: v1.42-WIP-0916~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81c6377d93106ccfae12b5b4f1953e97aa92b65e;p=thirdparty%2Fe2fsprogs.git libext2fs: don't hang in ext2fs_new_block2() on a full bigalloc file system Prevent ext2fs_new_block2() from looping forever when a bigalloc file system is full. Signed-off-by: "Theodore Ts'o" --- diff --git a/lib/ext2fs/alloc.c b/lib/ext2fs/alloc.c index 835f78377..7583aaf3c 100644 --- a/lib/ext2fs/alloc.c +++ b/lib/ext2fs/alloc.c @@ -164,6 +164,8 @@ errcode_t ext2fs_new_block2(ext2_filsys fs, blk64_t goal, goal = fs->super->s_first_data_block; i = goal; c_ratio = 1 << ext2fs_get_bitmap_granularity(map); + if (c_ratio > 1) + goal &= ~EXT2FS_CLUSTER_MASK(fs); check_block_uninit(fs, map, (i - fs->super->s_first_data_block) / EXT2_BLOCKS_PER_GROUP(fs->super));