Skip to content

Commit

Permalink
ext4: fix byte order problems introduced by the COLLAPSE_RANGE patches
Browse files Browse the repository at this point in the history
This commit tries to fix some byte order issues that is found by sparse
check.

$ make M=fs/ext4 C=2 CF=-D__CHECK_ENDIAN__
...
  CHECK   fs/ext4/extents.c
fs/ext4/extents.c:5232:41: warning: restricted __le32 degrades to integer
fs/ext4/extents.c:5236:52: warning: bad assignment (-=) to restricted __le32
fs/ext4/extents.c:5258:45: warning: bad assignment (-=) to restricted __le32
fs/ext4/extents.c:5303:28: warning: restricted __le32 degrades to integer
fs/ext4/extents.c:5318:18: warning: incorrect type in assignment (different base types)
fs/ext4/extents.c:5318:18:    expected unsigned int [unsigned] [usertype] ex_start
fs/ext4/extents.c:5318:18:    got restricted __le32 [usertype] ee_block
fs/ext4/extents.c:5319:24: warning: restricted __le32 degrades to integer
fs/ext4/extents.c:5334:31: warning: incorrect type in assignment (different base types)
...

Cc: Andreas Dilger <[email protected]>
Cc: Namjae Jeon <[email protected]>
Signed-off-by: Zheng Liu <[email protected]>
Signed-off-by: "Theodore Ts'o" <[email protected]>
  • Loading branch information
gnehzuil authored and tytso committed Apr 12, 2014
1 parent 6e6358f commit 847c6c4
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions fs/ext4/extents.c
Original file line number Diff line number Diff line change
Expand Up @@ -5229,11 +5229,11 @@ ext4_ext_shift_path_extents(struct ext4_ext_path *path, ext4_lblk_t shift,
if (ex_start == EXT_FIRST_EXTENT(path[depth].p_hdr))
update = 1;

*start = ex_last->ee_block +
*start = le32_to_cpu(ex_last->ee_block) +
ext4_ext_get_actual_len(ex_last);

while (ex_start <= ex_last) {
ex_start->ee_block -= shift;
le32_add_cpu(&ex_start->ee_block, -shift);
if (ex_start >
EXT_FIRST_EXTENT(path[depth].p_hdr)) {
if (ext4_ext_try_to_merge_right(inode,
Expand All @@ -5255,7 +5255,7 @@ ext4_ext_shift_path_extents(struct ext4_ext_path *path, ext4_lblk_t shift,
if (err)
goto out;

path[depth].p_idx->ei_block -= shift;
le32_add_cpu(&path[depth].p_idx->ei_block, -shift);
err = ext4_ext_dirty(handle, inode, path + depth);
if (err)
goto out;
Expand Down Expand Up @@ -5300,7 +5300,8 @@ ext4_ext_shift_extents(struct inode *inode, handle_t *handle,
return ret;
}

stop_block = extent->ee_block + ext4_ext_get_actual_len(extent);
stop_block = le32_to_cpu(extent->ee_block) +
ext4_ext_get_actual_len(extent);
ext4_ext_drop_refs(path);
kfree(path);

Expand All @@ -5315,8 +5316,9 @@ ext4_ext_shift_extents(struct inode *inode, handle_t *handle,
path = ext4_ext_find_extent(inode, start - 1, NULL, 0);
depth = path->p_depth;
extent = path[depth].p_ext;
ex_start = extent->ee_block;
ex_end = extent->ee_block + ext4_ext_get_actual_len(extent);
ex_start = le32_to_cpu(extent->ee_block);
ex_end = le32_to_cpu(extent->ee_block) +
ext4_ext_get_actual_len(extent);
ext4_ext_drop_refs(path);
kfree(path);

Expand All @@ -5331,7 +5333,7 @@ ext4_ext_shift_extents(struct inode *inode, handle_t *handle,
return PTR_ERR(path);
depth = path->p_depth;
extent = path[depth].p_ext;
current_block = extent->ee_block;
current_block = le32_to_cpu(extent->ee_block);
if (start > current_block) {
/* Hole, move to the next extent */
ret = mext_next_extent(inode, path, &extent);
Expand Down

0 comments on commit 847c6c4

Please sign in to comment.