Hi all, This all started when we realized that
atomic64_t v; ... typeof(v.counter) my_val = atomic64_set(&v, VAL); is a valid assignment on some architectures, but not on others [1]: in particular, the assignment is valid on all architectures #define -ing their atomic64_set() macro to WRITE_ONCE() (which is currently evaluated). Mark suggested to clean up all non-portable users of atomic*_set(), and to prevent WRITE_ONCE() from being evaluated [2]; this resulted in this first attempt/patchset based on Mark's atomics/type-cleanup branch [3]. Cheers Andrea [1] https://lkml.kernel.org/r/20190523083013.GA4616@andrea [2] https://lkml.kernel.org/r/[email protected] [3] git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git atomics/type-cleanup Cc: Arnd Bergmann <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: Jorgen Hansen <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Will Deacon <[email protected]> Cc: Mark Rutland <[email protected]> Cc: "Paul E. McKenney" <[email protected]> Andrea Parri (2): vmw_vmci: Clean up uses of atomic*_set() compiler: Prevent evaluation of WRITE_ONCE() include/linux/compiler.h | 5 ++--- include/linux/vmw_vmci_defs.h | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) -- 2.7.4

