Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error

Bart Van Assche
2018-01-23T22:29:06Z

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 1738 bytes --]

On Tue, 2018-01-23 at 14:03 -0800, Paul E. McKenney wrote:
> On Tue, Jan 23, 2018 at 04:04:17PM +0000, Bart Van Assche wrote:
> > 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 rcu_head structures that are
> > dynamically allocated are automatically tracked, but
> > rcu_head structures allocated on the stack
> > must be initialized with init_rcu_head_on_stack()
> > and cleaned up with destroy_rcu_head_on_stack() .
> > Similarly, statically allocated non-stack rcu_head
> > structures must be initialized with init_rcu_head()
> > and cleaned up with destroy_rcu_head() .
>
> And this is the intent. What breaks when you do that?

Hello Paul,

I inserted a init_rcu_head() call in the ib_srpt driver for a dynamically
allocated object and that triggers a linker error with
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y. I just verified that the ib_srpt driver still
works fine if the init_rcu_head() calls are removed from that driver. However,
the following part of the comment in include/linux/rcupdate.h above
init_rcu_head() seems confusing to me: "rcu_head structures allocated
dynamically in the heap or defined statically don't need any initialization."
Should that comment perhaps be updated such that it matches
Documentation/RCU/Design/Requirements/Requirements.html?

Thanks,

Bart.N‹§²æìr¸›yúèšØb²X¬¶Ç§vØ^–)Þº{.nÇ+‰·¥Š{±­ÙšŠ{ayº\x1dÊ‡Ú™ë,j\a­¢f£¢·hš‹»öì\x17/oSc¾™Ú³9˜uÀ¦æå‰È&jw¨®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿïêäz¹Þ–Šàþf£¢·hšˆ§~ˆmš