befs: annotate fs32 on tests for superblock endianness
PATCH 1/1 befs: annotate fs32 on tests for superblock endianness
Does compile-time byteswapping rather than runtime.
Noticed by sparse:fs/befs/super.c:29:6: warning: cast to restricted __le32 fs/befs/super.c:29:6: warning: cast from restricted fs32 fs/befs/super.c:31:11: warning: cast to restricted __be32 fs/befs/super.c:31:11: warning: cast from restricted fs32 fs/befs/super.c:31:11: warning: cast to restricted __be32 fs/befs/super.c:31:11: warning: cast from restricted fs32 fs/befs/super.c:31:11: warning: cast to restricted __be32 fs/befs/super.c:31:11: warning: cast from restricted fs32 fs/befs/super.c:31:11: warning: cast to restricted __be32 fs/befs/super.c:31:11: warning: cast from restricted fs32 fs/befs/super.c:31:11: warning: cast to restricted __be32 fs/befs/super.c:31:11: warning: cast from restricted fs32 fs/befs/super.c:31:11: warning: cast to restricted __be32 fs/befs/super.c:31:11: warning: cast from restricted fs32 fs/befs/linuxvfs.c:811:7: warning: cast to restricted __le32 fs/befs/linuxvfs.c:811:7: warning: cast from restricted fs32 fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32 fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32 fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32 fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32 fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32 fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32 fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32 fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32 fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32 fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32 fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32 fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32
--- fs/befs/befs_fs_types.h | 4 ++++ fs/befs/linuxvfs.c | 4 ++-- fs/befs/super.c | 6 +++--- 3 files changed, 9 insertions(+), 5 deletions(-)
fs/befs/befs_fs_types.h +4 -0
@@ -55,8 +55,12 @@ enum super_flags { };#define BEFS_BYTEORDER_NATIVE 0x42494745 +#define BEFS_BYTEORDER_NATIVE_LE (__force fs32)cpu_to_le32(BEFS_BYTEORDER_NATIVE) +#define BEFS_BYTEORDER_NATIVE_BE (__force fs32)cpu_to_be32(BEFS_BYTEORDER_NATIVE)#define BEFS_SUPER_MAGIC BEFS_SUPER_MAGIC1 +#define BEFS_SUPER_MAGIC1_LE (__force fs32)cpu_to_le32(BEFS_SUPER_MAGIC1) +#define BEFS_SUPER_MAGIC1_BE (__force fs32)cpu_to_be32(BEFS_SUPER_MAGIC1)/* * Flags of inode
fs/befs/linuxvfs.c +2 -2
@@ -808,8 +808,8 @@ befs_fill_super(struct super_block *sb, void *data, int silent)/* account for offset of super block on x86 */ disk_sb = (befs_super_block *) bh->b_data; -if ((le32_to_cpu (disk_sb->magic1) ==BEFS_SUPER_MAGIC1 ) || - (be32_to_cpu (disk_sb->magic1) ==BEFS_SUPER_MAGIC1 )) { +if ((disk_sb->magic1 ==BEFS_SUPER_MAGIC1_LE ) || + (disk_sb->magic1 ==BEFS_SUPER_MAGIC1_BE )) {befs_debug (sb,"Using PPC superblock location" ); }else {befs_debug (sb,"Using x86 superblock location" );
fs/befs/super.c +3 -3
@@ -26,10 +26,10 @@ befs_load_sb(struct super_block *sb, befs_super_block * disk_sb)befs_sb_info *befs_sb =BEFS_SB (sb);/* Check the byte order of the filesystem */ -if (le32_to_cpu (disk_sb->fs_byte_order) ==BEFS_BYTEORDER_NATIVE ) +if (disk_sb->fs_byte_order ==BEFS_BYTEORDER_NATIVE_LE ) befs_sb->byte_order =BEFS_BYTESEX_LE ; -else if (be32_to_cpu (disk_sb->fs_byte_order) ==BEFS_BYTEORDER_NATIVE ) - befs_sb->byte_order =BEFS_BYTESEX_BE ; +else if (disk_sb->fs_byte_order ==BEFS_BYTEORDER_NATIVE_BE ) + befs_sb->byte_order =BEFS_BYTESEX_BE ; befs_sb->magic1 =fs32_to_cpu (sb, disk_sb->magic1); befs_sb->magic2 =fs32_to_cpu (sb, disk_sb->magic2);
Signature · 1 line
1.5.6.4.570.g052e