[PATCH] x86: properly parenthesize cmpxchg() macro arguments

From: Jan Beulich
Date: Thu Jan 26 2012 - 10:46:27 EST


Quite oddly, all of the arguments passed through from the top level
macros to the second level which didn't need parentheses had them,
while the only expression (involving a parameter) needing them didn't.

Very recently I got bitten by the lack thereof when using something
like "array + index" for the first operand, with "array" being an
array more narrow than int.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

---
arch/x86/include/asm/cmpxchg.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--- 3.3-rc1/arch/x86/include/asm/cmpxchg.h
+++ 3.3-rc1-x86-cmpxchg-parenthesize/arch/x86/include/asm/cmpxchg.h
@@ -145,13 +145,13 @@ extern void __add_wrong_size(void)

#ifdef __HAVE_ARCH_CMPXCHG
#define cmpxchg(ptr, old, new) \
- __cmpxchg((ptr), (old), (new), sizeof(*ptr))
+ __cmpxchg(ptr, old, new, sizeof(*(ptr)))

#define sync_cmpxchg(ptr, old, new) \
- __sync_cmpxchg((ptr), (old), (new), sizeof(*ptr))
+ __sync_cmpxchg(ptr, old, new, sizeof(*(ptr)))

#define cmpxchg_local(ptr, old, new) \
- __cmpxchg_local((ptr), (old), (new), sizeof(*ptr))
+ __cmpxchg_local(ptr, old, new, sizeof(*(ptr)))
#endif

/*



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/