Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4

Pull ext4 fixes from Ted Ts'o:
"Fix misc bugs and a regression for ext4"

* tag 'for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
ext4: add MODULE_SOFTDEP to ensure crc32c is included in the initramfs
ext4: fix bitmap position validation
ext4: set h_journal if there is a failure starting a reserved handle
ext4: prevent right-shifting extents beyond EXT_MAX_BLOCKS

+18 -9
+5 -4
fs/ext4/balloc.c
··· 321 321 struct ext4_sb_info *sbi = EXT4_SB(sb); 322 322 ext4_grpblk_t offset; 323 323 ext4_grpblk_t next_zero_bit; 324 + ext4_grpblk_t max_bit = EXT4_CLUSTERS_PER_GROUP(sb); 324 325 ext4_fsblk_t blk; 325 326 ext4_fsblk_t group_first_block; 326 327 ··· 339 338 /* check whether block bitmap block number is set */ 340 339 blk = ext4_block_bitmap(sb, desc); 341 340 offset = blk - group_first_block; 342 - if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize || 341 + if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit || 343 342 !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data)) 344 343 /* bad block bitmap */ 345 344 return blk; ··· 347 346 /* check whether the inode bitmap block number is set */ 348 347 blk = ext4_inode_bitmap(sb, desc); 349 348 offset = blk - group_first_block; 350 - if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize || 349 + if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit || 351 350 !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data)) 352 351 /* bad block bitmap */ 353 352 return blk; ··· 355 354 /* check whether the inode table block number is set */ 356 355 blk = ext4_inode_table(sb, desc); 357 356 offset = blk - group_first_block; 358 - if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize || 359 - EXT4_B2C(sbi, offset + sbi->s_itb_per_group) >= sb->s_blocksize) 357 + if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit || 358 + EXT4_B2C(sbi, offset + sbi->s_itb_per_group) >= max_bit) 360 359 return blk; 361 360 next_zero_bit = ext4_find_next_zero_bit(bh->b_data, 362 361 EXT4_B2C(sbi, offset + sbi->s_itb_per_group),
+11 -5
fs/ext4/extents.c
··· 5329 5329 stop = le32_to_cpu(extent->ee_block); 5330 5330 5331 5331 /* 5332 - * In case of left shift, Don't start shifting extents until we make 5333 - * sure the hole is big enough to accommodate the shift. 5332 + * For left shifts, make sure the hole on the left is big enough to 5333 + * accommodate the shift. For right shifts, make sure the last extent 5334 + * won't be shifted beyond EXT_MAX_BLOCKS. 5334 5335 */ 5335 5336 if (SHIFT == SHIFT_LEFT) { 5336 5337 path = ext4_find_extent(inode, start - 1, &path, ··· 5351 5350 5352 5351 if ((start == ex_start && shift > ex_start) || 5353 5352 (shift > start - ex_end)) { 5354 - ext4_ext_drop_refs(path); 5355 - kfree(path); 5356 - return -EINVAL; 5353 + ret = -EINVAL; 5354 + goto out; 5355 + } 5356 + } else { 5357 + if (shift > EXT_MAX_BLOCKS - 5358 + (stop + ext4_ext_get_actual_len(extent))) { 5359 + ret = -EINVAL; 5360 + goto out; 5357 5361 } 5358 5362 } 5359 5363
+1
fs/ext4/super.c
··· 5886 5886 MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others"); 5887 5887 MODULE_DESCRIPTION("Fourth Extended Filesystem"); 5888 5888 MODULE_LICENSE("GPL"); 5889 + MODULE_SOFTDEP("pre: crc32c"); 5889 5890 module_init(ext4_init_fs) 5890 5891 module_exit(ext4_exit_fs)
+1
fs/jbd2/transaction.c
··· 532 532 */ 533 533 ret = start_this_handle(journal, handle, GFP_NOFS); 534 534 if (ret < 0) { 535 + handle->h_journal = journal; 535 536 jbd2_journal_free_reserved(handle); 536 537 return ret; 537 538 }