On Tue, 2018-01-23 at 08:21 -0700, Jason Gunthorpe wrote: > /* > * init_rcu_head_on_stack()/destroy_rcu_head_on_stack() are needed for dynamic > * initialization and destruction of rcu_head on the stack. rcu_head structures > * allocated dynamically in the heap or defined statically don't need any > * initialization. > */ > > The commit that introduced init_rcu_head is > 546a9d8519ed137b2804a3f5a3659003039dd49c which suggests it exists only > to help the slab allocators, although curiously the allocators never > call it these days.. > > Maybe Paul can confirm? It would be great if Paul could provide feedback. The comment in include/linux/rcupdate.h seems to contradict the following paragraph from Documentation/RCU/Design/Requirements/Requirements.html for statically allocated objects: The corresponding <tt>rcu_head</tt> structures that are dynamically allocated are automatically tracked, but <tt>rcu_head</tt> structures allocated on the stack must be initialized with <tt>init_rcu_head_on_stack()</tt> and cleaned up with <tt>destroy_rcu_head_on_stack()</tt>. Similarly, statically allocated non-stack <tt>rcu_head</tt> structures must be initialized with <tt>init_rcu_head()</tt> and cleaned up with <tt>destroy_rcu_head()</tt>. Bart.��.n��������+%������w��{.n�����{���fk��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f