mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 12:10:23 -04:00
Merge tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
Pull ext4 fixes from Ted Ts'o: "Unfortunately, we introduced some big-endian bugs during the last merge window. Fortunately, Cai and Christian noticed before 3.9 shipped." * tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: ext4: fix big-endian bugs which could cause fs corruptions
This commit is contained in:
@@ -2999,20 +2999,23 @@ static int ext4_split_extent_at(handle_t *handle,
|
||||
if (split_flag & EXT4_EXT_DATA_VALID1) {
|
||||
err = ext4_ext_zeroout(inode, ex2);
|
||||
zero_ex.ee_block = ex2->ee_block;
|
||||
zero_ex.ee_len = ext4_ext_get_actual_len(ex2);
|
||||
zero_ex.ee_len = cpu_to_le16(
|
||||
ext4_ext_get_actual_len(ex2));
|
||||
ext4_ext_store_pblock(&zero_ex,
|
||||
ext4_ext_pblock(ex2));
|
||||
} else {
|
||||
err = ext4_ext_zeroout(inode, ex);
|
||||
zero_ex.ee_block = ex->ee_block;
|
||||
zero_ex.ee_len = ext4_ext_get_actual_len(ex);
|
||||
zero_ex.ee_len = cpu_to_le16(
|
||||
ext4_ext_get_actual_len(ex));
|
||||
ext4_ext_store_pblock(&zero_ex,
|
||||
ext4_ext_pblock(ex));
|
||||
}
|
||||
} else {
|
||||
err = ext4_ext_zeroout(inode, &orig_ex);
|
||||
zero_ex.ee_block = orig_ex.ee_block;
|
||||
zero_ex.ee_len = ext4_ext_get_actual_len(&orig_ex);
|
||||
zero_ex.ee_len = cpu_to_le16(
|
||||
ext4_ext_get_actual_len(&orig_ex));
|
||||
ext4_ext_store_pblock(&zero_ex,
|
||||
ext4_ext_pblock(&orig_ex));
|
||||
}
|
||||
@@ -3272,7 +3275,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle,
|
||||
if (err)
|
||||
goto out;
|
||||
zero_ex.ee_block = ex->ee_block;
|
||||
zero_ex.ee_len = ext4_ext_get_actual_len(ex);
|
||||
zero_ex.ee_len = cpu_to_le16(ext4_ext_get_actual_len(ex));
|
||||
ext4_ext_store_pblock(&zero_ex, ext4_ext_pblock(ex));
|
||||
|
||||
err = ext4_ext_get_access(handle, inode, path + depth);
|
||||
|
||||
@@ -1539,9 +1539,9 @@ static int free_hole_blocks(handle_t *handle, struct inode *inode,
|
||||
blk = *i_data;
|
||||
if (level > 0) {
|
||||
ext4_lblk_t first2;
|
||||
bh = sb_bread(inode->i_sb, blk);
|
||||
bh = sb_bread(inode->i_sb, le32_to_cpu(blk));
|
||||
if (!bh) {
|
||||
EXT4_ERROR_INODE_BLOCK(inode, blk,
|
||||
EXT4_ERROR_INODE_BLOCK(inode, le32_to_cpu(blk),
|
||||
"Read failure");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user