X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcommon%2Fconsumer.c;h=b55fd153d7830e1d817ed4144dbd65fdf776b00b;hb=f724d81e402a1eb319ce0392c5b6770787a28edc;hp=f01eb5d065dd2d81dff1089754014fd449a8a10c;hpb=a863986c475194160928667627e9d8bacbdc1506;p=lttng-tools.git diff --git a/src/common/consumer.c b/src/common/consumer.c index f01eb5d06..b55fd153d 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -1516,9 +1516,7 @@ int lttng_consumer_recv_cmd(struct lttng_consumer_local_data *ctx, } /* - * Iterate over all stream element of the hashtable and free them. This is race - * free since the hashtable received MUST be in a race free synchronization - * state. It's the caller responsability to make sure of that. + * Iterate over all streams of the hashtable and free them properly. */ static void destroy_stream_ht(struct lttng_ht *ht) { @@ -1535,7 +1533,7 @@ static void destroy_stream_ht(struct lttng_ht *ht) ret = lttng_ht_del(ht, &iter); assert(!ret); - free(stream); + call_rcu(&stream->node.head, consumer_free_stream); } rcu_read_unlock(); @@ -1635,7 +1633,7 @@ static void consumer_del_metadata_stream(struct lttng_consumer_stream *stream) consumer_del_channel(stream->chan); } - free(stream); + call_rcu(&stream->node.head, consumer_free_stream); } /*