From a207d4e86a133bdbfd2f08134c49d11c9240fb75 Mon Sep 17 00:00:00 2001 From: Erik Larsson Date: Thu, 11 Feb 2016 14:19:41 +0100 Subject: [PATCH] endians.h: Cast the result of const endianness macros to the right type. This fixes compiler warnings emitted when you compare an le32 value with e.g. 'const_cpu_to_le32(-1)' on a little-endian system, because previously the expansion of the macro expression 'const_cpu_to_le32(-1)' would be '(-1)' on a little-endian system but '(u32)((((u32)(-1) & 0xff000000u) >> 24) | (((u32)(-1) & 0x00ff0000u) >> 8) | (((u32)(-1) & 0x0000ff00u) << 8) | (((u32)(-1) & 0x000000ffu) << 24))' on a big-endian system, i.e. the type of the expanded expression would be 'int' (signed) in the little-endian case but 'u32' (unsigned) in the big-endian case. With this commit the type of the expanded expression will be 'le32' in both the little-endian and the big-endian case. --- include/ntfs-3g/endians.h | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/include/ntfs-3g/endians.h b/include/ntfs-3g/endians.h index f7eb6c4f..b93761d3 100644 --- a/include/ntfs-3g/endians.h +++ b/include/ntfs-3g/endians.h @@ -264,36 +264,36 @@ /* Constant endianness conversion defines. */ -#define const_le16_to_cpu(x) __constant_le16_to_cpu(x) -#define const_le32_to_cpu(x) __constant_le32_to_cpu(x) -#define const_le64_to_cpu(x) __constant_le64_to_cpu(x) +#define const_le16_to_cpu(x) ((u16) __constant_le16_to_cpu(x)) +#define const_le32_to_cpu(x) ((u32) __constant_le32_to_cpu(x)) +#define const_le64_to_cpu(x) ((u64) __constant_le64_to_cpu(x)) -#define const_cpu_to_le16(x) __constant_cpu_to_le16(x) -#define const_cpu_to_le32(x) __constant_cpu_to_le32(x) -#define const_cpu_to_le64(x) __constant_cpu_to_le64(x) +#define const_cpu_to_le16(x) ((le16) __constant_cpu_to_le16(x)) +#define const_cpu_to_le32(x) ((le32) __constant_cpu_to_le32(x)) +#define const_cpu_to_le64(x) ((le64) __constant_cpu_to_le64(x)) -#define const_sle16_to_cpu(x) __constant_le16_to_cpu((le16) x) -#define const_sle32_to_cpu(x) __constant_le32_to_cpu((le32) x) -#define const_sle64_to_cpu(x) __constant_le64_to_cpu((le64) x) +#define const_sle16_to_cpu(x) ((s16) __constant_le16_to_cpu((le16) x)) +#define const_sle32_to_cpu(x) ((s32) __constant_le32_to_cpu((le32) x)) +#define const_sle64_to_cpu(x) ((s64) __constant_le64_to_cpu((le64) x)) -#define const_cpu_to_sle16(x) __constant_cpu_to_le16((u16) x) -#define const_cpu_to_sle32(x) __constant_cpu_to_le32((u32) x) -#define const_cpu_to_sle64(x) __constant_cpu_to_le64((u64) x) +#define const_cpu_to_sle16(x) ((sle16) __constant_cpu_to_le16((u16) x)) +#define const_cpu_to_sle32(x) ((sle32) __constant_cpu_to_le32((u32) x)) +#define const_cpu_to_sle64(x) ((sle64) __constant_cpu_to_le64((u64) x)) -#define const_be16_to_cpu(x) __constant_be16_to_cpu(x) -#define const_be32_to_cpu(x) __constant_be32_to_cpu(x) -#define const_be64_to_cpu(x) __constant_be64_to_cpu(x) +#define const_be16_to_cpu(x) ((u16) __constant_be16_to_cpu(x))) +#define const_be32_to_cpu(x) ((u32) __constant_be32_to_cpu(x))) +#define const_be64_to_cpu(x) ((u64) __constant_be64_to_cpu(x))) -#define const_cpu_to_be16(x) __constant_cpu_to_be16(x) -#define const_cpu_to_be32(x) __constant_cpu_to_be32(x) -#define const_cpu_to_be64(x) __constant_cpu_to_be64(x) +#define const_cpu_to_be16(x) ((be16) __constant_cpu_to_be16(x)) +#define const_cpu_to_be32(x) ((be32) __constant_cpu_to_be32(x)) +#define const_cpu_to_be64(x) ((be64) __constant_cpu_to_be64(x)) -#define const_sbe16_to_cpu(x) __constant_be16_to_cpu((be16) x) -#define const_sbe32_to_cpu(x) __constant_be32_to_cpu((be32) x) -#define const_sbe64_to_cpu(x) __constant_be64_to_cpu((be64) x) +#define const_sbe16_to_cpu(x) ((s16) __constant_be16_to_cpu((be16) x)) +#define const_sbe32_to_cpu(x) ((s32) __constant_be32_to_cpu((be32) x)) +#define const_sbe64_to_cpu(x) ((s64) __constant_be64_to_cpu((be64) x)) -#define const_cpu_to_sbe16(x) __constant_cpu_to_be16((u16) x) -#define const_cpu_to_sbe32(x) __constant_cpu_to_be32((u32) x) -#define const_cpu_to_sbe64(x) __constant_cpu_to_be64((u64) x) +#define const_cpu_to_sbe16(x) ((sbe16) __constant_cpu_to_be16((u16) x)) +#define const_cpu_to_sbe32(x) ((sbe32) __constant_cpu_to_be32((u32) x)) +#define const_cpu_to_sbe64(x) ((sbe64) __constant_cpu_to_be64((u64) x)) #endif /* defined _NTFS_ENDIANS_H */