Messages in this thread Patch in this message | | | Date | Thu, 26 Jan 2012 15:47:37 +0000 | From | "Jan Beulich" <> | Subject | [PATCH] x86: properly parenthesize cmpxchg() macro arguments |
| |
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@suse.com>
--- 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 /*
| |