[lttng-dev] [PATCH liburcu] Fix lifetime of rcu_barrier()'s completion structure

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Sat Apr 19 16:03:39 EDT 2014


----- Original Message -----
> From: "Keir Fraser" <keir at cohodata.com>
> To: lttng-dev at lists.lttng.org
> Cc: "Mathieu Desnoyers" <mathieu.desnoyers at efficios.com>, "Paul E. McKenney" <paulmck at linux.vnet.ibm.com>
> Sent: Friday, April 18, 2014 4:12:49 PM
> Subject: [PATCH liburcu] Fix lifetime of rcu_barrier()'s completion structure
> 
> [Another attachment, I must sort out to integrate with git send-mail]
> 
> rcu_barrier() can return as soon as completion.barrier_count==0, which
> frees the completion struct along with the rest of its stack frame. But
> its call_rcu callbacks may yet try to read and write completion.futex
> via the wake_up function.
> 
> Fix this by calloc()ing the completion struct and implementing a
> reference count to determine when it is eventually free()d.
> 
> This also fixes bug #787, since calloc() initialises all fields of the
> structure to zero.

I slightly edited your patch to use urcu_ref() and uatomic_sub_return()
(simple style fix). Please let me know if you are OK with the attached
patch.

Thanks!

Mathieu

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fix-rcu-barrier.patch
Type: text/x-patch
Size: 3662 bytes
Desc: not available
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20140419/7f355992/attachment.bin>


More information about the lttng-dev mailing list