Whamcloud - gitweb
ext2fs: add byte swapping of new superblock fields for BE machines
authorGabriel Krisman Bertazi <krisman@collabora.com>
Wed, 21 Nov 2018 00:11:27 +0000 (19:11 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 21 Nov 2018 23:19:35 +0000 (18:19 -0500)
New superblock fields must be byte swapped before being accessed in Big
Endian machines.

Not tested on an actual BE machine.

Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
lib/ext2fs/swapfs.c

index b168a2f..a156004 100644 (file)
@@ -129,8 +129,11 @@ void ext2fs_swap_super(struct ext2_super_block * sb)
        sb->s_lpf_ino = ext2fs_swab32(sb->s_lpf_ino);
        sb->s_prj_quota_inum = ext2fs_swab32(sb->s_prj_quota_inum);
        sb->s_checksum_seed = ext2fs_swab32(sb->s_checksum_seed);
+       /* s_*_time_hi are __u8 and does not need swabbing */
+       sb->s_encoding = ext2fs_swab16(sb->s_encoding);
+       sb->s_encoding_flags = ext2fs_swab16(sb->s_encoding_flags);
        /* catch when new fields are used from s_reserved */
-       EXT2FS_BUILD_BUG_ON(sizeof(sb->s_reserved) != 98 * sizeof(__le32));
+       EXT2FS_BUILD_BUG_ON(sizeof(sb->s_reserved) != 95 * sizeof(__le32));
        sb->s_checksum = ext2fs_swab32(sb->s_checksum);
 }