| From b675aad7fce587cd65eaf882a9cf8248f27b6a4e Mon Sep 17 00:00:00 2001 |
| From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> |
| Date: Thu, 13 Dec 2018 18:42:57 +0300 |
| Subject: ARC: fix __ffs return value to avoid build warnings |
| |
| [ Upstream commit 4e868f8419cb4cb558c5d428e7ab5629cef864c7 ] |
| |
| | 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: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> |
| Signed-off-by: Vineet Gupta <vgupta@synopsys.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arc/include/asm/bitops.h | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| diff --git a/arch/arc/include/asm/bitops.h b/arch/arc/include/asm/bitops.h |
| index 8da87feec59aa..99e6d8948f4ac 100644 |
| --- a/arch/arc/include/asm/bitops.h |
| +++ b/arch/arc/include/asm/bitops.h |
| @@ -340,7 +340,7 @@ static inline __attribute__ ((const)) int __fls(unsigned long x) |
| /* |
| * __ffs: Similar to ffs, but zero based (0-31) |
| */ |
| -static inline __attribute__ ((const)) int __ffs(unsigned long word) |
| +static inline __attribute__ ((const)) unsigned long __ffs(unsigned long word) |
| { |
| if (!word) |
| return word; |
| @@ -400,9 +400,9 @@ static inline __attribute__ ((const)) int ffs(unsigned long x) |
| /* |
| * __ffs: Similar to ffs, but zero based (0-31) |
| */ |
| -static inline __attribute__ ((const)) int __ffs(unsigned long x) |
| +static inline __attribute__ ((const)) unsigned long __ffs(unsigned long x) |
| { |
| - int n; |
| + unsigned long n; |
| |
| asm volatile( |
| " ffs.f %0, %1 \n" /* 0:31; 31(Z) if src 0 */ |
| -- |
| 2.19.1 |
| |