From c7260a81b6c99282da7c59b6124381f92c637658 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Mon, 3 Jun 2013 23:19:59 -0400 Subject: [PATCH] Fix: Missing RCU locks on access to consumerd's channel ht MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Galarneau Signed-off-by: David Goulet --- src/common/consumer.c | 5 +++++ 1 file changed, 5 insertions(+) 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: -- 2.34.1