From: Darrick J. Wong Date: Thu, 9 Nov 2017 17:35:29 +0000 (-0600) Subject: misc: fix ubsan warnings X-Git-Tag: v4.14.0-rc1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0e515d642feddc80a576b09140a09de764182df;p=thirdparty%2Fxfsprogs-dev.git misc: fix ubsan warnings Fix all the things ubsan warned about. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- diff --git a/include/bitops.h b/include/bitops.h index 44599a784..7774950ad 100644 --- a/include/bitops.h +++ b/include/bitops.h @@ -13,19 +13,19 @@ static inline int fls(int x) if (!x) return 0; if (!(x & 0xffff0000u)) { - x <<= 16; + x = (x & 0xffffu) << 16; r -= 16; } if (!(x & 0xff000000u)) { - x <<= 8; + x = (x & 0xffffffu) << 8; r -= 8; } if (!(x & 0xf0000000u)) { - x <<= 4; + x = (x & 0xfffffffu) << 4; r -= 4; } if (!(x & 0xc0000000u)) { - x <<= 2; + x = (x & 0x3fffffffu) << 2; r -= 2; } if (!(x & 0x80000000u)) { diff --git a/include/command.h b/include/command.h index fb3f5c79b..a7fe6eb01 100644 --- a/include/command.h +++ b/include/command.h @@ -25,9 +25,9 @@ * not iterate the command args function callout and so can be used * for functions like "help" that should only ever be run once. */ -#define CMD_FLAG_ONESHOT (1<<31) -#define CMD_FLAG_FOREIGN_OK (1<<30) /* command not restricted to XFS */ -#define CMD_FLAG_LIBRARY (1<<29) /* command provided by libxcmd */ +#define CMD_FLAG_ONESHOT (1u << 31) +#define CMD_FLAG_FOREIGN_OK (1u << 30) /* command not restricted to XFS */ +#define CMD_FLAG_LIBRARY (1u << 29) /* command provided by libxcmd */ typedef int (*cfunc_t)(int argc, char **argv); typedef void (*helpfunc_t)(void); diff --git a/include/xfs_arch.h b/include/xfs_arch.h index 186cadbab..34fcd4dbf 100644 --- a/include/xfs_arch.h +++ b/include/xfs_arch.h @@ -253,7 +253,7 @@ static inline uint16_t get_unaligned_be16(void *p) static inline uint32_t get_unaligned_be32(void *p) { uint8_t *__p = p; - return __p[0] << 24 | __p[1] << 16 | __p[2] << 8 | __p[3]; + return (uint32_t)__p[0] << 24 | __p[1] << 16 | __p[2] << 8 | __p[3]; } static inline uint64_t get_unaligned_be64(void *p)