arch/powerpc: use BUILD_BUG_ON_MSG() when detect unfit {cmp}xchg size
PATCH v2 1/1 arch/powerpc: use BUILD_BUG_ON_MSG() when detect unfit {cmp}xchg size
From: pan xinhui <[email protected]>
__xchg_called_with_bad_pointer() can't tell us what codes use {cmp}xchg in incorrect way. And no error will be reported until the link stage. To fix such a kind of issues easily, we use BUILD_BUG_ON_MSG() here.
---
change from V1:
use BUILD_BUG_ON_MSG to provide more build error messages.
--- arch/powerpc/include/asm/cmpxchg.h | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-)
arch/powerpc/include/asm/cmpxchg.h +5 -14
@@ -5,6 +5,7 @@#include <linux/compiler.h> #include <asm/synch.h> #include <asm/asm-compat.h> +#include <linux/bug.h> /* * Atomic exchange
@@ -92,12 +93,6 @@ __xchg_u64_local(volatile void *p, unsigned long val) }#endif -/* -* This function doesn't exist, so you'll get a linker error -* if something tries to do an invalid xchg(). -*/ -extern void __xchg_called_with_bad_pointer (void ); -static __always_inline unsigned long __xchg (volatile void *ptr,unsigned long x,unsigned int size) {
@@ -109,7 +104,7 @@ __xchg(volatile void *ptr, unsigned long x, unsigned int size)return __xchg_u64 (ptr, x);#endif } -__xchg_called_with_bad_pointer (); +BUILD_BUG_ON_MSG (1 ,"Unsupported size for __xchg" );return x; }
@@ -124,7 +119,7 @@ __xchg_local(volatile void *ptr, unsigned long x, unsigned int size)return __xchg_u64_local (ptr, x);#endif } -__xchg_called_with_bad_pointer (); +BUILD_BUG_ON_MSG (1 ,"Unsupported size for __xchg_local" );return x; }#define xchg (ptr,x) \
@@ -235,10 +230,6 @@ __cmpxchg_u64_local(volatile unsigned long *p, unsigned long old, }#endif -/* This function doesn't exist, so you'll get a linker error -if something tries to do an invalid cmpxchg(). */ -extern void __cmpxchg_called_with_bad_pointer (void ); -static __always_inline unsigned long __cmpxchg (volatile void *ptr,unsigned long old,unsigned long new,unsigned int size)
@@ -251,7 +242,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new,return __cmpxchg_u64 (ptr, old, new);#endif } -__cmpxchg_called_with_bad_pointer (); +BUILD_BUG_ON_MSG (1 ,"Unsupported size for __cmpxchg" );return old; }
@@ -267,7 +258,7 @@ __cmpxchg_local(volatile void *ptr, unsigned long old, unsigned long new,return __cmpxchg_u64_local (ptr, old, new);#endif } -__cmpxchg_called_with_bad_pointer (); +BUILD_BUG_ON_MSG (1 ,"Unsupported size for __cmpxchg_local" );return old; }
Signature · 1 line
2.5.0
Quoted 7 lines · xinhui
From: pan xinhui <[email protected]>
__xchg_called_with_bad_pointer()can't tell us what codes use {cmp}xchg in incorrect way. And no error will be reported until the link stage. To fix such a kind of issues easily, we useBUILD_BUG_ON_MSG()here.Signed-off-by pan xinhui <[email protected]>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/10d8b1480e6966ba03cd3afad3
cheers