Skip to content
  • Marek Vasut's avatar
    asm-generic: cmpxchg: avoid warnings from macro-ized cmpxchg() implementations · d975440b
    Marek Vasut authored
    This change is similar to e001bbae
    
    
    ARM: cmpxchg: avoid warnings from macro-ized cmpxchg() implementations
    
    A recent change in kernel/acct.c added a new warning for many
    configurations using generic __xchg() implementation:
    
    In file included from ./arch/nios2/include/asm/cmpxchg.h:12:0,
                     from include/asm-generic/atomic.h:18,
                     from arch/nios2/include/generated/asm/atomic.h:1,
                     from include/linux/atomic.h:4,
                     from include/linux/spinlock.h:406,
                     from include/linux/mmzone.h:7,
                     from include/linux/gfp.h:5,
                     from include/linux/mm.h:9,
                     from kernel/acct.c:46:
    kernel/acct.c: In function 'acct_pin_kill':
    include/asm-generic/cmpxchg.h:94:3: warning: value computed is not used [-Wunused-value]
      ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\
       ^
    include/asm-generic/cmpxchg.h:102:28: note: in expansion of macro 'cmpxchg_local'
     #define cmpxchg(ptr, o, n) cmpxchg_local((ptr), (o), (n))
                                ^
    kernel/acct.c:177:2: note: in expansion of macro 'cmpxchg'
      cmpxchg(&acct->ns->bacct, pin, NULL);
      ^
    
    The code is in fact correct, it's just a cmpxchg() call that
    intentionally ignores the result, and no other code does that.  The
    warning does not show up on x86 because of the way that its cmpxchg()
    macro is written. This changes the asm-ggeneric implementation to use
    a similar construct with a compound expression instead of a typecast,
    which causes the compiler to not complain about an unused result.
    
    Fix the other macros in this file in a similar way, and place them
    just below their function implementations.
    
    Signed-off-by: default avatarMarek Vasut <marex@denx.de>
    Cc: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    d975440b