* [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error
@ 2018-01-23 11:50 Leon Romanovsky
[not found] ` <20180123115013.12213-1-leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
0 siblings, 1 reply; 15+ messages in thread
From: Leon Romanovsky @ 2018-01-23 11:50 UTC (permalink / raw)
To: Bart Van Assche, Doug Ledford, Jason Gunthorpe
Cc: Leon Romanovsky, linux-rdma-u79uwXL29TY76Z2rM5mHXA
Combination of CONFIG_DEBUG_OBJECTS_RCU_HEAD=y and
CONFIG_INFINIBAND_SRPT=m produces the following build error.
ERROR: "init_rcu_head" [drivers/infiniband/ulp/srpt/ib_srpt.ko] undefined!
make[1]: *** [scripts/Makefile.modpost:92: __modpost] Error 1
make: *** [Makefile:1216: modules] Error 2
The reason to it that init_rcu_head() is not exported and not supposed
to be used in modules. The correct function to use is init_rcu_head_on_stack().
Fixes: 795bc112cd5a ("IB/srpt: Make it safe to use RCU for srpt_device.rch_list")
Fixes: a11253142e6d ("IB/srpt: Rework multi-channel support")
Signed-off-by: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
---
drivers/infiniband/ulp/srpt/ib_srpt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c
index bf37816a1b12..65bbc3dbf0fd 100644
--- a/drivers/infiniband/ulp/srpt/ib_srpt.c
+++ b/drivers/infiniband/ulp/srpt/ib_srpt.c
@@ -1950,7 +1950,7 @@ static struct srpt_nexus *srpt_get_nexus(struct srpt_port *sport,
nexus = ERR_PTR(-ENOMEM);
break;
}
- init_rcu_head(&tmp_nexus->rcu);
+ init_rcu_head_on_stack(&tmp_nexus->rcu);
INIT_LIST_HEAD(&tmp_nexus->ch_list);
memcpy(tmp_nexus->i_port_id, i_port_id, 16);
memcpy(tmp_nexus->t_port_id, t_port_id, 16);
@@ -2110,7 +2110,7 @@ static int srpt_cm_req_recv(struct ib_cm_id *cm_id,
goto reject;
}
- init_rcu_head(&ch->rcu);
+ init_rcu_head_on_stack(&ch->rcu);
kref_init(&ch->kref);
ch->pkey = be16_to_cpu(pkey);
ch->nexus = nexus;
--
2.15.1
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 15+ messages in thread[parent not found: <20180123115013.12213-1-leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <20180123115013.12213-1-leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> @ 2018-01-23 15:21 ` Jason Gunthorpe [not found] ` <20180123152142.GB30619-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Jason Gunthorpe @ 2018-01-23 15:21 UTC (permalink / raw) To: Leon Romanovsky, Paul E. McKenney Cc: Bart Van Assche, Doug Ledford, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Tue, Jan 23, 2018 at 01:50:13PM +0200, Leon Romanovsky wrote: > Combination of CONFIG_DEBUG_OBJECTS_RCU_HEAD=y and > CONFIG_INFINIBAND_SRPT=m produces the following build error. > > ERROR: "init_rcu_head" [drivers/infiniband/ulp/srpt/ib_srpt.ko] undefined! > make[1]: *** [scripts/Makefile.modpost:92: __modpost] Error 1 > make: *** [Makefile:1216: modules] Error 2 > > The reason to it that init_rcu_head() is not exported and not supposed > to be used in modules. The correct function to use is init_rcu_head_on_stack(). > > Fixes: 795bc112cd5a ("IB/srpt: Make it safe to use RCU for srpt_device.rch_list") > Fixes: a11253142e6d ("IB/srpt: Rework multi-channel support") > Signed-off-by: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> > drivers/infiniband/ulp/srpt/ib_srpt.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c > index bf37816a1b12..65bbc3dbf0fd 100644 > +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c > @@ -1950,7 +1950,7 @@ static struct srpt_nexus *srpt_get_nexus(struct srpt_port *sport, > nexus = ERR_PTR(-ENOMEM); > break; > } > - init_rcu_head(&tmp_nexus->rcu); > + init_rcu_head_on_stack(&tmp_nexus->rcu); The comments for init_rcu_head_on_stack say it should only be used for stack allocations and tmp_nexus is not a stack allocation. Removing the init_rcu_head entirely seems like the right thing to do, and maybe that function is poorly named? /* * 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? Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <20180123152142.GB30619-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <20180123152142.GB30619-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> @ 2018-01-23 16:04 ` Bart Van Assche [not found] ` <1516723456.3339.3.camel-Sjgp3cTcYWE@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Bart Van Assche @ 2018-01-23 16:04 UTC (permalink / raw) To: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset="utf-8", Size: 1429 bytes --] 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§²æìr¸yúèØb²X¬¶Ç§vØ^)Þº{.nÇ+·¥{±Ù{ayº\x1dÊÚë,j\a¢f£¢·h»öì\x17/oSc¾Ú³9uÀ¦æåÈ&jw¨®\x03(éÝ¢j"ú\x1a¶^[m§ÿïêäz¹Þàþf£¢·h§~m ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <1516723456.3339.3.camel-Sjgp3cTcYWE@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <1516723456.3339.3.camel-Sjgp3cTcYWE@public.gmane.org> @ 2018-01-23 18:57 ` Leon Romanovsky [not found] ` <20180123185732.GA1393-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org> 2018-01-23 22:03 ` Paul E. McKenney 1 sibling, 1 reply; 15+ messages in thread From: Leon Romanovsky @ 2018-01-23 18:57 UTC (permalink / raw) To: Bart Van Assche Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org [-- Attachment #1: Type: text/plain, Size: 1636 bytes --] On Tue, Jan 23, 2018 at 04:04:17PM +0000, Bart Van Assche wrote: > 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>. Right, I missed it. So how are we going to solve that rdma/for-next doesn't compile? Thanks > > Bart.N?????r??y????b?X??ǧv?^?){.n?+????{??ٚ?{ay?\x1dʇڙ?,j\a??f???h???z?\x1e?w???\f???j:+v???w?j?m????\a????zZ+?????ݢj"??! [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <20180123185732.GA1393-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <20180123185732.GA1393-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org> @ 2018-01-23 22:30 ` Bart Van Assche [not found] ` <1516746607.3339.47.camel-Sjgp3cTcYWE@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Bart Van Assche @ 2018-01-23 22:30 UTC (permalink / raw) To: leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org On Tue, 2018-01-23 at 20:57 +0200, Leon Romanovsky wrote: > So how are we going to solve that rdma/for-next doesn't compile? How about the following? [PATCH] IB/srpt: Fix CONFIG_DEBUG_OBJECTS_RCU_HEAD=y build Avoid that the kernel build fails as follows if RCU debugging is enabled: ERROR: "init_rcu_head" [drivers/infiniband/ulp/srpt/ib_srpt.ko] undefined! diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c index 5ccc75c389e2..a78a79791950 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.c +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -1977,7 +1977,6 @@ static struct srpt_nexus *srpt_get_nexus(struct srpt_port *sport, nexus = ERR_PTR(-ENOMEM); break; } - init_rcu_head(&tmp_nexus->rcu); INIT_LIST_HEAD(&tmp_nexus->ch_list); memcpy(tmp_nexus->i_port_id, i_port_id, 16); memcpy(tmp_nexus->t_port_id, t_port_id, 16); @@ -2147,7 +2146,6 @@ static int srpt_cm_req_recv(struct srpt_device *const sdev, goto reject; } - init_rcu_head(&ch->rcu); kref_init(&ch->kref); ch->pkey = be16_to_cpu(pkey); ch->nexus = nexus; ^ permalink raw reply related [flat|nested] 15+ messages in thread
[parent not found: <1516746607.3339.47.camel-Sjgp3cTcYWE@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <1516746607.3339.47.camel-Sjgp3cTcYWE@public.gmane.org> @ 2018-01-24 6:44 ` Leon Romanovsky 2018-01-24 22:36 ` Doug Ledford 1 sibling, 0 replies; 15+ messages in thread From: Leon Romanovsky @ 2018-01-24 6:44 UTC (permalink / raw) To: Bart Van Assche Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org [-- Attachment #1: Type: text/plain, Size: 1225 bytes --] On Tue, Jan 23, 2018 at 10:30:08PM +0000, Bart Van Assche wrote: > On Tue, 2018-01-23 at 20:57 +0200, Leon Romanovsky wrote: > > So how are we going to solve that rdma/for-next doesn't compile? > > How about the following? > > [PATCH] IB/srpt: Fix CONFIG_DEBUG_OBJECTS_RCU_HEAD=y build > > Avoid that the kernel build fails as follows if RCU debugging is > enabled: > > ERROR: "init_rcu_head" [drivers/infiniband/ulp/srpt/ib_srpt.ko] undefined! > > diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c > index 5ccc75c389e2..a78a79791950 100644 > --- a/drivers/infiniband/ulp/srpt/ib_srpt.c > +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c > @@ -1977,7 +1977,6 @@ static struct srpt_nexus *srpt_get_nexus(struct srpt_port *sport, > nexus = ERR_PTR(-ENOMEM); > break; > } > - init_rcu_head(&tmp_nexus->rcu); > INIT_LIST_HEAD(&tmp_nexus->ch_list); > memcpy(tmp_nexus->i_port_id, i_port_id, 16); > memcpy(tmp_nexus->t_port_id, t_port_id, 16); > @@ -2147,7 +2146,6 @@ static int srpt_cm_req_recv(struct srpt_device *const sdev, > goto reject; > } > > - init_rcu_head(&ch->rcu); > kref_init(&ch->kref); > ch->pkey = be16_to_cpu(pkey); > ch->nexus = nexus; Thanks [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <1516746607.3339.47.camel-Sjgp3cTcYWE@public.gmane.org> 2018-01-24 6:44 ` Leon Romanovsky @ 2018-01-24 22:36 ` Doug Ledford [not found] ` <1516833393.27592.108.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 1 sibling, 1 reply; 15+ messages in thread From: Doug Ledford @ 2018-01-24 22:36 UTC (permalink / raw) To: Bart Van Assche, leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [-- Attachment #1: Type: text/plain, Size: 1533 bytes --] On Tue, 2018-01-23 at 22:30 +0000, Bart Van Assche wrote: > On Tue, 2018-01-23 at 20:57 +0200, Leon Romanovsky wrote: > > So how are we going to solve that rdma/for-next doesn't compile? > > How about the following? > > [PATCH] IB/srpt: Fix CONFIG_DEBUG_OBJECTS_RCU_HEAD=y build > > Avoid that the kernel build fails as follows if RCU debugging is > enabled: > > ERROR: "init_rcu_head" [drivers/infiniband/ulp/srpt/ib_srpt.ko] undefined! > > diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c > index 5ccc75c389e2..a78a79791950 100644 > --- a/drivers/infiniband/ulp/srpt/ib_srpt.c > +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c > @@ -1977,7 +1977,6 @@ static struct srpt_nexus *srpt_get_nexus(struct srpt_port *sport, > nexus = ERR_PTR(-ENOMEM); > break; > } > - init_rcu_head(&tmp_nexus->rcu); > INIT_LIST_HEAD(&tmp_nexus->ch_list); > memcpy(tmp_nexus->i_port_id, i_port_id, 16); > memcpy(tmp_nexus->t_port_id, t_port_id, 16); > @@ -2147,7 +2146,6 @@ static int srpt_cm_req_recv(struct srpt_device *const sdev, > goto reject; > } > > - init_rcu_head(&ch->rcu); > kref_init(&ch->kref); > ch->pkey = be16_to_cpu(pkey); > ch->nexus = nexus; Hi Bart, Can you please resend this as an official patch with SOB so we can pull this in? Thanks. -- Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> GPG KeyID: B826A3330E572FDD Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <1516833393.27592.108.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <1516833393.27592.108.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2018-01-24 22:40 ` Bart Van Assche [not found] ` <1516833624.3987.19.camel-Sjgp3cTcYWE@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Bart Van Assche @ 2018-01-24 22:40 UTC (permalink / raw) To: leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org On Wed, 2018-01-24 at 17:36 -0500, Doug Ledford wrote: > Can you please resend this as an official patch with SOB so we can pull > this in? Thanks. Hello Doug, Can you have a look at this patch and see whether this needs any further adjustments: https://marc.info/?l=linux-rdma&m=151677697120770. Thanks, Bart. ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <1516833624.3987.19.camel-Sjgp3cTcYWE@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <1516833624.3987.19.camel-Sjgp3cTcYWE@public.gmane.org> @ 2018-01-25 1:19 ` Doug Ledford 0 siblings, 0 replies; 15+ messages in thread From: Doug Ledford @ 2018-01-25 1:19 UTC (permalink / raw) To: Bart Van Assche, leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [-- Attachment #1: Type: text/plain, Size: 814 bytes --] On Wed, 2018-01-24 at 22:40 +0000, Bart Van Assche wrote: > On Wed, 2018-01-24 at 17:36 -0500, Doug Ledford wrote: > > Can you please resend this as an official patch with SOB so we can pull > > this in? Thanks. > > Hello Doug, > > Can you have a look at this patch and see whether this needs any further > adjustments: https://marc.info/?l=linux-rdma&m=151677697120770. > > Thanks, > > Bart. That's good. I just missed it in my email client because the time/date sorting of the threads had this thread later in my list and that lone patch sitting by itself out of sight-out of mind. Thanks for the pointer ;-) -- Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> GPG KeyID: B826A3330E572FDD Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <1516723456.3339.3.camel-Sjgp3cTcYWE@public.gmane.org> 2018-01-23 18:57 ` Leon Romanovsky @ 2018-01-23 22:03 ` Paul E. McKenney [not found] ` <20180123220337.GE3741-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> 1 sibling, 1 reply; 15+ messages in thread From: Paul E. McKenney @ 2018-01-23 22:03 UTC (permalink / raw) To: Bart Van Assche Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org On Tue, Jan 23, 2018 at 04:04:17PM +0000, Bart Van Assche wrote: > 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>. And this is the intent. What breaks when you do that? Thanx, Paul -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <20180123220337.GE3741-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <20180123220337.GE3741-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> @ 2018-01-23 22:29 ` Bart Van Assche [not found] ` <1516746545.3339.46.camel-Sjgp3cTcYWE@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Bart Van Assche @ 2018-01-23 22:29 UTC (permalink / raw) To: paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org [-- 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 <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>. > > 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¾Ú³9uÀ¦æåÈ&jw¨®\x03(éÝ¢j"ú\x1a¶^[m§ÿïêäz¹Þàþf£¢·h§~m ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <1516746545.3339.46.camel-Sjgp3cTcYWE@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <1516746545.3339.46.camel-Sjgp3cTcYWE@public.gmane.org> @ 2018-01-23 22:50 ` Paul E. McKenney [not found] ` <20180123225054.GK3741-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Paul E. McKenney @ 2018-01-23 22:50 UTC (permalink / raw) To: Bart Van Assche Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org On Tue, Jan 23, 2018 at 10:29:06PM +0000, Bart Van Assche wrote: > 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 <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>. > > > > 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? Good catch!!! How about the patch below? Thanx, Paul ------------------------------------------------------------------------ commit 2ccdd2a8f0ba33b71dab24da408fda79ed2ee063 Author: Paul E. McKenney <paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> Date: Tue Jan 23 14:48:33 2018 -0800 rcu: Fix init_rcu_head() comment. The current (and implicit) comment header for init_rcu_head() and destroy_rcu_head() incorrectly says that they are not needed for statically allocated rcu_head structures. This commit therefore fixes this comment. Reported-by: Bart Van Assche <Bart.VanAssche-Sjgp3cTcYWE@public.gmane.org> Signed-off-by: Paul E. McKenney <paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 043d04784675..36360d07f25b 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -214,10 +214,12 @@ do { \ #endif /* - * 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 init_rcu_head_on_stack() and destroy_rcu_head_on_stack() calls + * are needed for dynamic initialization and destruction of rcu_head + * on the stack, and init_rcu_head()/destroy_rcu_head() are needed for + * dynamic initialization and destruction of statically allocated rcu_head + * structures. However, rcu_head structures allocated dynamically in the + * heap don't need any initialization. */ #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD void init_rcu_head(struct rcu_head *head); -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 15+ messages in thread
[parent not found: <20180123225054.GK3741-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <20180123225054.GK3741-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> @ 2018-01-23 22:59 ` Bart Van Assche [not found] ` <1516748369.3339.59.camel-Sjgp3cTcYWE@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Bart Van Assche @ 2018-01-23 22:59 UTC (permalink / raw) To: paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org Cc: jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org On Tue, 2018-01-23 at 14:50 -0800, Paul E. McKenney wrote: > > rcu: Fix init_rcu_head() comment. > > The current (and implicit) comment header for init_rcu_head() and > destroy_rcu_head() incorrectly says that they are not needed for > statically allocated rcu_head structures. This commit therefore > fixes this comment. > > Reported-by: Bart Van Assche <Bart.VanAssche@wdc.com> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > > diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h > index 043d04784675..36360d07f25b 100644 > --- a/include/linux/rcupdate.h > +++ b/include/linux/rcupdate.h > @@ -214,10 +214,12 @@ do { \ > #endif > > /* > - * 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 init_rcu_head_on_stack() and destroy_rcu_head_on_stack() calls > + * are needed for dynamic initialization and destruction of rcu_head > + * on the stack, and init_rcu_head()/destroy_rcu_head() are needed for > + * dynamic initialization and destruction of statically allocated rcu_head > + * structures. However, rcu_head structures allocated dynamically in the > + * heap don't need any initialization. > */ > #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD > void init_rcu_head(struct rcu_head *head); Thanks! Feel free to add: Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com> ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <1516748369.3339.59.camel-Sjgp3cTcYWE@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <1516748369.3339.59.camel-Sjgp3cTcYWE@public.gmane.org> @ 2018-01-24 6:43 ` Leon Romanovsky [not found] ` <20180124064337.GB1393-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org> 0 siblings, 1 reply; 15+ messages in thread From: Leon Romanovsky @ 2018-01-24 6:43 UTC (permalink / raw) To: Bart Van Assche Cc: paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org, jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org [-- Attachment #1: Type: text/plain, Size: 1902 bytes --] On Tue, Jan 23, 2018 at 10:59:30PM +0000, Bart Van Assche wrote: > On Tue, 2018-01-23 at 14:50 -0800, Paul E. McKenney wrote: > > > > rcu: Fix init_rcu_head() comment. > > > > The current (and implicit) comment header for init_rcu_head() and > > destroy_rcu_head() incorrectly says that they are not needed for > > statically allocated rcu_head structures. This commit therefore > > fixes this comment. > > > > Reported-by: Bart Van Assche <Bart.VanAssche-Sjgp3cTcYWE@public.gmane.org> > > Signed-off-by: Paul E. McKenney <paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> > > > > diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h > > index 043d04784675..36360d07f25b 100644 > > --- a/include/linux/rcupdate.h > > +++ b/include/linux/rcupdate.h > > @@ -214,10 +214,12 @@ do { \ > > #endif > > > > /* > > - * 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 init_rcu_head_on_stack() and destroy_rcu_head_on_stack() calls > > + * are needed for dynamic initialization and destruction of rcu_head > > + * on the stack, and init_rcu_head()/destroy_rcu_head() are needed for > > + * dynamic initialization and destruction of statically allocated rcu_head > > + * structures. However, rcu_head structures allocated dynamically in the > > + * heap don't need any initialization. > > */ > > #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD > > void init_rcu_head(struct rcu_head *head); > > Thanks! > > Feel free to add: > > Reviewed-by: Bart Van Assche <bart.vanassche-Sjgp3cTcYWE@public.gmane.org> > > Paul, Are you going to send it through your tree? Reviewed-by: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <20180124064337.GB1393-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>]
* Re: [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error [not found] ` <20180124064337.GB1393-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org> @ 2018-01-24 21:51 ` Paul E. McKenney 0 siblings, 0 replies; 15+ messages in thread From: Paul E. McKenney @ 2018-01-24 21:51 UTC (permalink / raw) To: Leon Romanovsky Cc: Bart Van Assche, jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org On Wed, Jan 24, 2018 at 08:43:37AM +0200, Leon Romanovsky wrote: > On Tue, Jan 23, 2018 at 10:59:30PM +0000, Bart Van Assche wrote: > > On Tue, 2018-01-23 at 14:50 -0800, Paul E. McKenney wrote: > > > > > > rcu: Fix init_rcu_head() comment. > > > > > > The current (and implicit) comment header for init_rcu_head() and > > > destroy_rcu_head() incorrectly says that they are not needed for > > > statically allocated rcu_head structures. This commit therefore > > > fixes this comment. > > > > > > Reported-by: Bart Van Assche <Bart.VanAssche-Sjgp3cTcYWE@public.gmane.org> > > > Signed-off-by: Paul E. McKenney <paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> > > > > > > diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h > > > index 043d04784675..36360d07f25b 100644 > > > --- a/include/linux/rcupdate.h > > > +++ b/include/linux/rcupdate.h > > > @@ -214,10 +214,12 @@ do { \ > > > #endif > > > > > > /* > > > - * 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 init_rcu_head_on_stack() and destroy_rcu_head_on_stack() calls > > > + * are needed for dynamic initialization and destruction of rcu_head > > > + * on the stack, and init_rcu_head()/destroy_rcu_head() are needed for > > > + * dynamic initialization and destruction of statically allocated rcu_head > > > + * structures. However, rcu_head structures allocated dynamically in the > > > + * heap don't need any initialization. > > > */ > > > #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD > > > void init_rcu_head(struct rcu_head *head); > > > > Thanks! > > > > Feel free to add: > > > > Reviewed-by: Bart Van Assche <bart.vanassche-Sjgp3cTcYWE@public.gmane.org> > > Paul, > > Are you going to send it through your tree? It is currently queued for v4.17 -- didn't seem horribly urgent. > Reviewed-by: Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> Applied, thank you! Thanx, Paul -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2018-01-25 1:19 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-23 11:50 [PATCH rdma-next] RDMA/srpt: Fix RCU debug build error Leon Romanovsky
[not found] ` <20180123115013.12213-1-leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2018-01-23 15:21 ` Jason Gunthorpe
[not found] ` <20180123152142.GB30619-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2018-01-23 16:04 ` Bart Van Assche
[not found] ` <1516723456.3339.3.camel-Sjgp3cTcYWE@public.gmane.org>
2018-01-23 18:57 ` Leon Romanovsky
[not found] ` <20180123185732.GA1393-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2018-01-23 22:30 ` Bart Van Assche
[not found] ` <1516746607.3339.47.camel-Sjgp3cTcYWE@public.gmane.org>
2018-01-24 6:44 ` Leon Romanovsky
2018-01-24 22:36 ` Doug Ledford
[not found] ` <1516833393.27592.108.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-01-24 22:40 ` Bart Van Assche
[not found] ` <1516833624.3987.19.camel-Sjgp3cTcYWE@public.gmane.org>
2018-01-25 1:19 ` Doug Ledford
2018-01-23 22:03 ` Paul E. McKenney
[not found] ` <20180123220337.GE3741-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2018-01-23 22:29 ` Bart Van Assche
[not found] ` <1516746545.3339.46.camel-Sjgp3cTcYWE@public.gmane.org>
2018-01-23 22:50 ` Paul E. McKenney
[not found] ` <20180123225054.GK3741-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2018-01-23 22:59 ` Bart Van Assche
[not found] ` <1516748369.3339.59.camel-Sjgp3cTcYWE@public.gmane.org>
2018-01-24 6:43 ` Leon Romanovsky
[not found] ` <20180124064337.GB1393-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2018-01-24 21:51 ` Paul E. McKenney
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox