From: Jérémie Galarneau Date: Tue, 4 Jun 2013 03:19:59 +0000 (-0400) Subject: Fix: Missing RCU locks on access to consumerd's channel ht X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=c7260a81b6c99282da7c59b6124381f92c637658 Fix: Missing RCU locks on access to consumerd's channel ht Signed-off-by: Jérémie Galarneau Signed-off-by: David Goulet --- diff --git a/src/common/consumer.c b/src/common/consumer.c index 370909219..6fd716bdb 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -2716,16 +2716,20 @@ 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 +2745,7 @@ restart: if (!uatomic_sub_return(&chan->refcount, 1)) { consumer_del_channel(chan); } + rcu_read_unlock(); goto restart; } case CONSUMER_CHANNEL_QUIT: