Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758372AbbFBJIR (ORCPT ); Tue, 2 Jun 2015 05:08:17 -0400 Received: from mail-wi0-f182.google.com ([209.85.212.182]:37248 "EHLO mail-wi0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756711AbbFBJHw (ORCPT ); Tue, 2 Jun 2015 05:07:52 -0400 MIME-Version: 1.0 In-Reply-To: <2137098.src0nTNAZ2@wuerfel> References: <2137098.src0nTNAZ2@wuerfel> Date: Tue, 2 Jun 2015 11:07:50 +0200 Message-ID: Subject: Re: [PATCH] ARM: avoid cmpxchg warning in kernel/acct.c From: Frans Klaver To: Arnd Bergmann Cc: linux-arm-kernel@lists.infradead.org, Russell King - ARM Linux , "linux-kernel@vger.kernel.org" , Al Viro Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2834 Lines: 61 On Tue, May 12, 2015 at 11:29 PM, Arnd Bergmann wrote: > A recent change in kernel/acct.c added a new warning for many > configurations on ARM: > > kernel/acct.c: In function 'acct_pin_kill': > arch/arm/include/asm/cmpxchg.h:122:3: warning: value computed is not used [-Wunused-value] > ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ > > 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 ARM 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. > > Signed-off-by: Arnd Bergmann > Fixes: 3b994d98a815 ("get rid of the second argument of acct_kill()") > --- > This helps build some of the ARM defconfigs without warnings once more. > > diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h > index abb2c3769b01..04be894f7c4e 100644 > --- a/arch/arm/include/asm/cmpxchg.h > +++ b/arch/arm/include/asm/cmpxchg.h > @@ -119,8 +119,8 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size > * them available. > */ > #define cmpxchg_local(ptr, o, n) \ > - ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ > - (unsigned long)(n), sizeof(*(ptr)))) > + ({(__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ > + (unsigned long)(n), sizeof(*(ptr)));}) > #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) > > #ifndef CONFIG_SMP > @@ -202,10 +202,10 @@ static inline unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long old, > } > > #define cmpxchg(ptr,o,n) \ > - ((__typeof__(*(ptr)))__cmpxchg_mb((ptr), \ > + ({(__typeof__(*(ptr)))__cmpxchg_mb((ptr), \ > (unsigned long)(o), \ > (unsigned long)(n), \ > - sizeof(*(ptr)))) > + sizeof(*(ptr)));}) > > static inline unsigned long __cmpxchg_local(volatile void *ptr, > unsigned long old, > > Works for me. Thanks, Frans -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/