Commit cbfa0e72 authored by Linus Torvalds's avatar Linus Torvalds

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
parents cd0e4a9d 8cde7ad1
...@@ -2999,20 +2999,23 @@ static int ext4_split_extent_at(handle_t *handle, ...@@ -2999,20 +2999,23 @@ static int ext4_split_extent_at(handle_t *handle,
if (split_flag & EXT4_EXT_DATA_VALID1) { if (split_flag & EXT4_EXT_DATA_VALID1) {
err = ext4_ext_zeroout(inode, ex2); err = ext4_ext_zeroout(inode, ex2);
zero_ex.ee_block = ex2->ee_block; 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_store_pblock(&zero_ex,
ext4_ext_pblock(ex2)); ext4_ext_pblock(ex2));
} else { } else {
err = ext4_ext_zeroout(inode, ex); err = ext4_ext_zeroout(inode, ex);
zero_ex.ee_block = ex->ee_block; 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_store_pblock(&zero_ex,
ext4_ext_pblock(ex)); ext4_ext_pblock(ex));
} }
} else { } else {
err = ext4_ext_zeroout(inode, &orig_ex); err = ext4_ext_zeroout(inode, &orig_ex);
zero_ex.ee_block = orig_ex.ee_block; 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_store_pblock(&zero_ex,
ext4_ext_pblock(&orig_ex)); ext4_ext_pblock(&orig_ex));
} }
...@@ -3272,7 +3275,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle, ...@@ -3272,7 +3275,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle,
if (err) if (err)
goto out; goto out;
zero_ex.ee_block = ex->ee_block; 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)); ext4_ext_store_pblock(&zero_ex, ext4_ext_pblock(ex));
err = ext4_ext_get_access(handle, inode, path + depth); err = ext4_ext_get_access(handle, inode, path + depth);
......
...@@ -1539,9 +1539,9 @@ static int free_hole_blocks(handle_t *handle, struct inode *inode, ...@@ -1539,9 +1539,9 @@ static int free_hole_blocks(handle_t *handle, struct inode *inode,
blk = *i_data; blk = *i_data;
if (level > 0) { if (level > 0) {
ext4_lblk_t first2; ext4_lblk_t first2;
bh = sb_bread(inode->i_sb, blk); bh = sb_bread(inode->i_sb, le32_to_cpu(blk));
if (!bh) { if (!bh) {
EXT4_ERROR_INODE_BLOCK(inode, blk, EXT4_ERROR_INODE_BLOCK(inode, le32_to_cpu(blk),
"Read failure"); "Read failure");
return -EIO; return -EIO;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment