Skip to content
  • Eugeniy Paltsev's avatar
    ARC: fix __ffs return value to avoid build warnings · 87142f76
    Eugeniy Paltsev authored
    [ Upstream commit 4e868f84
    
     ]
    
    |  CC      mm/nobootmem.o
    |In file included from ./include/asm-generic/bug.h:18:0,
    |                 from ./arch/arc/include/asm/bug.h:32,
    |                 from ./include/linux/bug.h:5,
    |                 from ./include/linux/mmdebug.h:5,
    |                 from ./include/linux/gfp.h:5,
    |                 from ./include/linux/slab.h:15,
    |                 from mm/nobootmem.c:14:
    |mm/nobootmem.c: In function '__free_pages_memory':
    |./include/linux/kernel.h:845:29: warning: comparison of distinct pointer types lacks a cast
    |   (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
    |                             ^
    |./include/linux/kernel.h:859:4: note: in expansion of macro '__typecheck'
    |   (__typecheck(x, y) && __no_side_effects(x, y))
    |    ^~~~~~~~~~~
    |./include/linux/kernel.h:869:24: note: in expansion of macro '__safe_cmp'
    |  __builtin_choose_expr(__safe_cmp(x, y), \
    |                        ^~~~~~~~~~
    |./include/linux/kernel.h:878:19: note: in expansion of macro '__careful_cmp'
    | #define min(x, y) __careful_cmp(x, y, <)
    |                   ^~~~~~~~~~~~~
    |mm/nobootmem.c:104:11: note: in expansion of macro 'min'
    |   order = min(MAX_ORDER - 1UL, __ffs(start));
    
    Change __ffs return value from 'int' to 'unsigned long' as it
    is done in other implementations (like asm-generic, x86, etc...)
    to avoid build-time warnings in places where type is strictly
    checked.
    
    As __ffs may return values in [0-31] interval changing return
    type to unsigned is valid.
    
    Signed-off-by: default avatarEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    87142f76