Whamcloud - gitweb
libext2fs: Fix SET_BMAP bugs in ext2fs_bmap() and ext2fs_bmap2()
authorTheodore Ts'o <tytso@mit.edu>
Sun, 29 Nov 2009 05:08:54 +0000 (00:08 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 29 Nov 2009 06:03:04 +0000 (01:03 -0500)
Don't byte-swap the block number when setting i_block[x], since the
write_inode function will take of byte swapping the inode.

The phys_blk parameter contains an input parameter in the SET_BMAP
case, so it must be passed to ext2fs_bmap2() from the legacy function
ext2fs_bmap().

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
lib/ext2fs/bmap.c

index 2a86439..933036b 100644 (file)
@@ -214,9 +214,6 @@ errcode_t ext2fs_bmap2(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode *inode,
        if (block < EXT2_NDIR_BLOCKS) {
                if (bmap_flags & BMAP_SET) {
                        b = *phys_blk;
-#ifdef WORDS_BIGENDIAN
-                       b = ext2fs_swab32(b);
-#endif
                        inode_bmap(inode, block) = b;
                        inode_dirty++;
                        goto done;
@@ -325,7 +322,7 @@ errcode_t ext2fs_bmap(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode *inode,
                      blk_t *phys_blk)
 {
        errcode_t ret;
-       blk64_t ret_blk;
+       blk64_t ret_blk = *phys_blk;
 
        ret = ext2fs_bmap2(fs, ino, inode, block_buf, bmap_flags, block,
                            0, &ret_blk);