Re: [PATCH tip/core/rcu 2/2] documentation: Record reason for rcu_head two-byte alignment

From: Peter Zijlstra
Date: Mon Aug 22 2016 - 12:26:13 EST


On Mon, Aug 22, 2016 at 08:14:43AM -0700, Paul E. McKenney wrote:
> The __call_rcu() assertion that checks only the bottom bit of the
> rcu_head pointer is a bit counter-intuitive in these days of ubiquitous
> 64-bit systems. This commit therefore records the reason for this
> odd alignment check, namely that m68k guarantees only two-byte alignment
> despite being a 32-bit architectures.

Would not something like:

#ifdef CONFIG_M68K
/*
* m68k is weird and doesn't have naturally aligned types.
*/
WARN_ON_ONCE((unsigned long)head & 1);
#else
WARN_ON_ONCE((unsigned long)head & (sizeof(unsigned long) - 1));
#endif

Be better?