| From foo@baz Tue Dec 4 11:34:44 CET 2018 |
| From: Arnd Bergmann <arnd@arndb.de> |
| Date: Wed, 1 Feb 2017 18:01:17 +0100 |
| Subject: workqueue: avoid clang warning |
| |
| From: Arnd Bergmann <arnd@arndb.de> |
| |
| (commit a45463cbf3f9dcdae683033c256f50bded513d6a upstream) |
| |
| Building with clang shows lots of warning like: |
| |
| drivers/amba/bus.c:447:8: warning: implicit conversion from 'long long' to 'int' changes value from 4294967248 to -48 |
| [-Wconstant-conversion] |
| static DECLARE_DELAYED_WORK(deferred_retry_work, amba_deferred_retry_func); |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| include/linux/workqueue.h:187:26: note: expanded from macro 'DECLARE_DELAYED_WORK' |
| struct delayed_work n = __DELAYED_WORK_INITIALIZER(n, f, 0) |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| include/linux/workqueue.h:177:10: note: expanded from macro '__DELAYED_WORK_INITIALIZER' |
| .work = __WORK_INITIALIZER((n).work, (f)), \ |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| include/linux/workqueue.h:170:10: note: expanded from macro '__WORK_INITIALIZER' |
| .data = WORK_DATA_STATIC_INIT(), \ |
| ^~~~~~~~~~~~~~~~~~~~~~~ |
| include/linux/workqueue.h:111:39: note: expanded from macro 'WORK_DATA_STATIC_INIT' |
| ATOMIC_LONG_INIT(WORK_STRUCT_NO_POOL | WORK_STRUCT_STATIC) |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ |
| include/asm-generic/atomic-long.h:32:41: note: expanded from macro 'ATOMIC_LONG_INIT' |
| #define ATOMIC_LONG_INIT(i) ATOMIC_INIT(i) |
| ~~~~~~~~~~~~^~ |
| arch/arm/include/asm/atomic.h:21:27: note: expanded from macro 'ATOMIC_INIT' |
| #define ATOMIC_INIT(i) { (i) } |
| ~ ^ |
| |
| This makes the type cast explicit, which shuts up the warning. |
| |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Signed-off-by: Tejun Heo <tj@kernel.org> |
| Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| include/linux/workqueue.h | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/include/linux/workqueue.h |
| +++ b/include/linux/workqueue.h |
| @@ -106,9 +106,9 @@ struct work_struct { |
| #endif |
| }; |
| |
| -#define WORK_DATA_INIT() ATOMIC_LONG_INIT(WORK_STRUCT_NO_POOL) |
| +#define WORK_DATA_INIT() ATOMIC_LONG_INIT((unsigned long)WORK_STRUCT_NO_POOL) |
| #define WORK_DATA_STATIC_INIT() \ |
| - ATOMIC_LONG_INIT(WORK_STRUCT_NO_POOL | WORK_STRUCT_STATIC) |
| + ATOMIC_LONG_INIT((unsigned long)(WORK_STRUCT_NO_POOL | WORK_STRUCT_STATIC)) |
| |
| struct delayed_work { |
| struct work_struct work; |