X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Flttng-abi.c;h=198987bd5a74f25775ef0e269699a11182b6bdc0;hb=daeda935f511f2f423311b9fa2e5c312781f8806;hp=c3721b93e428ce7d48bf94f40ff9ebd0a6585ef4;hpb=8b97fd420ec915f0264e20e4a0f2d1b7924adfda;p=lttng-modules.git diff --git a/src/lttng-abi.c b/src/lttng-abi.c index c3721b93..198987bd 100644 --- a/src/lttng-abi.c +++ b/src/lttng-abi.c @@ -281,6 +281,8 @@ long lttng_abi_add_context(struct file *file, return lttng_add_vegid_to_ctx(ctx); case LTTNG_KERNEL_CONTEXT_VSGID: return lttng_add_vsgid_to_ctx(ctx); + case LTTNG_KERNEL_CONTEXT_TIME_NS: + return lttng_add_time_ns_to_ctx(ctx); default: return -EINVAL; } @@ -1078,7 +1080,7 @@ int lttng_metadata_ring_buffer_open(struct inode *inode, struct file *file) * session, we need to keep our own reference on the transport. */ if (!try_module_get(stream->transport->owner)) { - printk(KERN_WARNING "LTT : Can't lock transport module.\n"); + printk(KERN_WARNING "LTTng: Can't lock transport module.\n"); return -EBUSY; } return lib_ring_buffer_open(inode, file, buf); @@ -1090,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); } @@ -1228,7 +1234,7 @@ int lttng_abi_open_metadata_stream(struct file *channel_file) * session, we need to keep our own reference on the transport. */ if (!try_module_get(metadata_stream->transport->owner)) { - printk(KERN_WARNING "LTT : Can't lock transport module.\n"); + printk(KERN_WARNING "LTTng: Can't lock transport module.\n"); ret = -EINVAL; goto notransport; } @@ -1243,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: @@ -2010,7 +2018,7 @@ int __init lttng_abi_init(void) <tng_proc_ops, NULL); if (!lttng_proc_dentry) { - printk(KERN_ERR "Error creating LTTng control file\n"); + printk(KERN_ERR "LTTng: Error creating control file\n"); ret = -ENOMEM; goto error; }