Merge tag 'ext4_for_linus-6.19-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4

Pull ext4 fixes from Ted Ts'o:

- Fix an inconsistency in structure size on 32-bit platforms caused by
padding differences for the new EXT4_IOC_[GS]ET_TUNE_SB_PARAM ioctls

- Fix a buffer leak on the error path when dropping the refcount an
xattr value stored in an inode

- Fix missing locking on the error path for the file defragmentation
ioctl leading to a BUG

* tag 'ext4_for_linus-6.19-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
ext4: fix iloc.bh leak in ext4_xattr_inode_update_ref
ext4: add missing down_write_data_sem in mext_move_extent().
ext4: fix ext4_tune_sb_params padding

+4 -1
+2
fs/ext4/move_extent.c
··· 393 393 394 394 repair_branches: 395 395 ret2 = 0; 396 + ext4_double_down_write_data_sem(orig_inode, donor_inode); 396 397 r_len = ext4_swap_extents(handle, donor_inode, orig_inode, 397 398 mext->donor_lblk, orig_map->m_lblk, 398 399 *m_len, 0, &ret2); 400 + ext4_double_up_write_data_sem(orig_inode, donor_inode); 399 401 if (ret2 || r_len != *m_len) { 400 402 ext4_error_inode_block(orig_inode, (sector_t)(orig_map->m_lblk), 401 403 EIO, "Unable to copy data block, data will be lost!");
+1
fs/ext4/xattr.c
··· 1037 1037 ext4_error_inode(ea_inode, __func__, __LINE__, 0, 1038 1038 "EA inode %lu ref wraparound: ref_count=%lld ref_change=%d", 1039 1039 ea_inode->i_ino, ref_count, ref_change); 1040 + brelse(iloc.bh); 1040 1041 ret = -EFSCORRUPTED; 1041 1042 goto out; 1042 1043 }
+1 -1
include/uapi/linux/ext4.h
··· 139 139 __u32 clear_feature_incompat_mask; 140 140 __u32 clear_feature_ro_compat_mask; 141 141 __u8 mount_opts[64]; 142 - __u8 pad[64]; 142 + __u8 pad[68]; 143 143 }; 144 144 145 145 #define EXT4_TUNE_FL_ERRORS_BEHAVIOR 0x00000001