On 2021-03-17, Geert Uytterhoeven <[email protected]> wrote:
> When compiling for 32-bit:
>
>     util_lib/elf_info.c: In function ‘get_desc_state’:
>     util_lib/elf_info.c:923:31: warning: left shift count >= width of type 
> [-Wshift-count-overflow]
>       923 | #define DESC_FLAGS_MASK  (3UL << DESC_FLAGS_SHIFT)
>         |                               ^~
>     util_lib/elf_info.c:925:25: note: in expansion of macro ‘DESC_FLAGS_MASK’
>       925 | #define DESC_ID_MASK  (~DESC_FLAGS_MASK)
>         |                         ^~~~~~~~~~~~~~~
>     util_lib/elf_info.c:926:30: note: in expansion of macro ‘DESC_ID_MASK’
>       926 | #define DESC_ID(sv)  ((sv) & DESC_ID_MASK)
>         |                              ^~~~~~~~~~~~
>     util_lib/elf_info.c:947:12: note: in expansion of macro ‘DESC_ID’
>       947 |  if (id != DESC_ID(state_val))
>         |            ^~~~~~~
>     util_lib/elf_info.c: In function ‘id_inc’:
>     util_lib/elf_info.c:923:31: warning: left shift count >= width of type 
> [-Wshift-count-overflow]
>       923 | #define DESC_FLAGS_MASK  (3UL << DESC_FLAGS_SHIFT)
>         |                               ^~
>     util_lib/elf_info.c:925:25: note: in expansion of macro ‘DESC_FLAGS_MASK’
>       925 | #define DESC_ID_MASK  (~DESC_FLAGS_MASK)
>         |                         ^~~~~~~~~~~~~~~
>     util_lib/elf_info.c:981:15: note: in expansion of macro ‘DESC_ID_MASK’
>       981 |  return (id & DESC_ID_MASK);
>         |               ^~~~~~~~~~~~
>
> Indeed, "unsigned long" constants are 32-bit on 32-bit platforms, and
> 64-bit on 64-bit platforms.
>
> Fix this by using a "ULL" suffix instead.
>
> Fixes: 4149df9005f2cdd2 ("printk: add support for lockless ringbuffer")
> Signed-off-by: Geert Uytterhoeven <[email protected]>

Reviewed-by: John Ogness <[email protected]>

> ---
>  util_lib/elf_info.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/util_lib/elf_info.c b/util_lib/elf_info.c
> index 2f23a448da08ebdd..7c0a2c345379a7ca 100644
> --- a/util_lib/elf_info.c
> +++ b/util_lib/elf_info.c
> @@ -920,8 +920,8 @@ enum desc_state {
>  
>  #define DESC_SV_BITS         (sizeof(uint64_t) * 8)
>  #define DESC_FLAGS_SHIFT     (DESC_SV_BITS - 2)
> -#define DESC_FLAGS_MASK              (3UL << DESC_FLAGS_SHIFT)
> -#define DESC_STATE(sv)               (3UL & (sv >> DESC_FLAGS_SHIFT))
> +#define DESC_FLAGS_MASK              (3ULL << DESC_FLAGS_SHIFT)
> +#define DESC_STATE(sv)               (3ULL & (sv >> DESC_FLAGS_SHIFT))
>  #define DESC_ID_MASK         (~DESC_FLAGS_MASK)
>  #define DESC_ID(sv)          ((sv) & DESC_ID_MASK)

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to