From: Jérémie Galarneau Date: Wed, 16 Oct 2019 16:35:23 +0000 (-0400) Subject: Fix: consumer: double unlock of rcu read lock on error X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=13e3b28009f1f922da6021e43254db86b78aa109;hp=d767977450c6bf1fb18ce8bb653d6b6dfdb6bb68 Fix: consumer: double unlock of rcu read lock on error Commit 6b584c2e changed the implementation of the "trace_chunk_exists" command to use the then-new "exists" method of the trace chunk registry. Before this change, the trace chunks were looked-up to check for their existence. Since the "exists" method doesn't require the caller to hold the rcu read lock, it is acquired later on in the function. However, the rcu read lock is still released on error when this function fails, resulting in a double-unlock. Signed-off-by: Jérémie Galarneau --- diff --git a/src/common/consumer/consumer.c b/src/common/consumer/consumer.c index 0086d748f..09f0f0983 100644 --- a/src/common/consumer/consumer.c +++ b/src/common/consumer/consumer.c @@ -4801,7 +4801,7 @@ enum lttcomm_return_code lttng_consumer_trace_chunk_exists( /* Internal error. */ ERR("Failed to query the existence of a trace chunk"); ret_code = LTTCOMM_CONSUMERD_FATAL; - goto end_rcu_unlock; + goto end; } DBG("Trace chunk %s locally", chunk_exists_local ? "exists" : "does not exist");