Re: linux-next: build failure after merge of the rcu tree

Paul E. McKenney
2016-05-02T11:06:48Z

On Mon, May 02, 2016 at 02:37:36PM +1000, Stephen Rothwell wrote:
> Hi Paul,
>
> After merging the rcu tree, today's linux-next build (x86_64 allmodconfig)
> failed like this:
>
> arch/x86/kvm/vmx.c: In function 'vmx_init':
> arch/x86/kvm/vmx.c:11026:2: error: function '_r_a_p__v' is initialized like a variable
> rcu_assign_pointer(crash_vmclear_loaded_vmcss,
> ^
> In file included from include/linux/rbtree.h:34:0,
> from include/linux/mm_types.h:9,
> from arch/x86/kvm/irq.h:25,
> from arch/x86/kvm/vmx.c:19:
> include/linux/rcupdate.h:657:45: warning: the comparison will always evaluate as 'false' for the address of '_r_a_p__v' will never be NULL [-Waddress]
> if (__builtin_constant_p(v) && (_r_a_p__v) == NULL) \
> ^
> arch/x86/kvm/vmx.c:11026:2: note: in expansion of macro 'rcu_assign_pointer'
> rcu_assign_pointer(crash_vmclear_loaded_vmcss,
> ^
> include/linux/rcupdate.h:655:12: error: nested function '_r_a_p__v' declared but never defined
> typeof(v) _r_a_p__v = (v); \
> ^
> arch/x86/kvm/vmx.c:11026:2: note: in expansion of macro 'rcu_assign_pointer'
> rcu_assign_pointer(crash_vmclear_loaded_vmcss,
> ^
>
> Caused by commit
>
> 16d7afcaa530 ("rcu: No ordering for rcu_assign_pointer() of NULL")
>
> I have reverted that commit for today.

Too much fun when rcu_assign_pointer() is invoked on a pointer to a
function... Sorry for the hassle!

Thanx, Paul