* Jérémie Galarneau ([email protected]) wrote:
> Signed-off-by: Jérémie Galarneau <[email protected]>

this had been merged into lttng-tools as:

commit c7260a81b6c99282da7c59b6124381f92c637658
Author: Jérémie Galarneau <[email protected]>
Date:   Mon Jun 3 23:19:59 2013 -0400

    Fix: Missing RCU locks on access to consumerd's channel ht
    
    Signed-off-by: Jérémie Galarneau <[email protected]>
    Signed-off-by: David Goulet <[email protected]>

For both stable-2.2 and master.


> ---
>  src/common/consumer.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/src/common/consumer.c b/src/common/consumer.c
> index 3709092..5f38375 100644
> --- a/src/common/consumer.c
> +++ b/src/common/consumer.c
> @@ -2716,16 +2716,21 @@ restart:
>  
>                                               
> lttng_ht_node_init_u64(&chan->wait_fd_node,
>                                                       chan->wait_fd);
> +                                             rcu_read_lock();
>                                               
> lttng_ht_add_unique_u64(channel_ht,
>                                                               
> &chan->wait_fd_node);
> +                                             rcu_read_unlock();
>                                               /* Add channel to the global 
> poll events list */
>                                               lttng_poll_add(&events, 
> chan->wait_fd,
>                                                               LPOLLIN | 
> LPOLLPRI);
>                                               break;
>                                       case CONSUMER_CHANNEL_DEL:
>                                       {
> +                                             rcu_read_lock();
>                                               chan = 
> consumer_find_channel(key);
> +
>                                               if (!chan) {
> +                                                     rcu_read_unlock();
>                                                       ERR("UST consumer get 
> channel key %" PRIu64 " not found for del channel", key);
>                                                       break;
>                                               }
> @@ -2741,6 +2746,7 @@ restart:
>                                               if 
> (!uatomic_sub_return(&chan->refcount, 1)) {
>                                                       
> consumer_del_channel(chan);
>                                               }
> +                                             rcu_read_unlock();
>                                               goto restart;
>                                       }
>                                       case CONSUMER_CHANNEL_QUIT:
> -- 
> 1.8.2.3
> 
> 
> _______________________________________________
> lttng-dev mailing list
> [email protected]
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to