-#define rcu_cmpxchg_pointer(p, old, _new) \
- rcu_cmpxchg_pointer_sym((void **)(p), (old), (_new))
+#define rcu_cmpxchg_pointer(p, old, _new) \
+ ({ \
+ typeof(*p) _________pold = (old); \
+ typeof(*p) _________pnew = (_new); \
+ typeof(*p) _________p1 = \
+ rcu_cmpxchg_pointer_sym((void **)(p), _________pold, \
+ _________pnew); \
+ (_________p1); \
+ })