Messages in this thread | | | Date | Wed, 29 Apr 2009 08:48:42 -0400 | From | Mathieu Desnoyers <> | Subject | Re: [PATCH] atomic: fix atomic_long_cmpxchg/xchg for 64 bit architectures |
| |
* Heiko Carstens (heiko.carstens@de.ibm.com) wrote: > From: Heiko Carstens <heiko.carstens@de.ibm.com> > > On a linux-next allyesconfig build: > > kernel/trace/ring_buffer.c:1726: > warning: passing argument 1 of 'atomic_cmpxchg' from incompatible pointer type > linux-next/arch/s390/include/asm/atomic.h:112: > note: expected 'struct atomic_t *' but argument is of type 'struct atomic64_t *' > > atomic_long_cmpxchg and atomic_long_xchg are incorrectly defined for > 64 bit architectures. They should be mapped to the atomic64_* variants. > > Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> > Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> > --- > include/asm-generic/atomic.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > Index: linux-next/include/asm-generic/atomic.h > =================================================================== > --- linux-next.orig/include/asm-generic/atomic.h > +++ linux-next/include/asm-generic/atomic.h > @@ -132,9 +132,9 @@ static inline long atomic_long_add_unles > #define atomic_long_inc_not_zero(l) atomic64_inc_not_zero((atomic64_t *)(l)) > > #define atomic_long_cmpxchg(l, old, new) \ > - (atomic_cmpxchg((atomic64_t *)(l), (old), (new))) > + (atomic64_cmpxchg((atomic64_t *)(l), (old), (new))) > #define atomic_long_xchg(v, new) \ > - (atomic_xchg((atomic64_t *)(l), (new))) > + (atomic64_xchg((atomic64_t *)(l), (new)))
Other architectures usually define something along the lines of :
include/asm/atomic.h:#define atomic64_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
This is why they did not care about calling atomic_cmpxchg or atomic64_cmpxchg.
This fix looks good. Thanks !
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> > #else /* BITS_PER_LONG == 64 */ >
-- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
| |