X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Flttng-abi.c;h=4dd6e7e5e2fff77290f493664b543e66471b0a96;hb=92143b2c5656;hp=312372fcb9bbc5d83bcc59011ad5834e6131d626;hpb=3e75e2a7f7693107faa58606538f80a4faf73fe6;p=lttng-modules.git diff --git a/src/lttng-abi.c b/src/lttng-abi.c index 312372fc..4dd6e7e5 100644 --- a/src/lttng-abi.c +++ b/src/lttng-abi.c @@ -1092,8 +1092,12 @@ int lttng_metadata_ring_buffer_release(struct inode *inode, struct file *file) struct lttng_metadata_stream *stream = file->private_data; struct lib_ring_buffer *buf = stream->priv; + mutex_lock(&stream->metadata_cache->lock); + list_del(&stream->list); + mutex_unlock(&stream->metadata_cache->lock); kref_put(&stream->metadata_cache->refcount, metadata_cache_destroy); module_put(stream->transport->owner); + kfree(stream); return lib_ring_buffer_release(inode, file, buf); } @@ -1245,8 +1249,10 @@ int lttng_abi_open_metadata_stream(struct file *channel_file) if (ret < 0) goto fd_error; + mutex_lock(&session->metadata_cache->lock); list_add(&metadata_stream->list, &session->metadata_cache->metadata_stream); + mutex_unlock(&session->metadata_cache->lock); return ret; fd_error: