Version 2.9.15
[lttng-modules.git] / lttng-abi.c
index 3e4a88c1f83b74ab77f08b52493943d2d3035ef0..1f00a0e5427aca5111bd625bc9193992269d406c 100644 (file)
@@ -55,6 +55,7 @@
 #include <lttng-abi-old.h>
 #include <lttng-events.h>
 #include <lttng-tracer.h>
+#include <lttng-tp-mempool.h>
 #include <lib/ringbuffer/frontend_types.h>
 
 /*
@@ -428,8 +429,8 @@ int lttng_abi_create_channel(struct file *session_file,
                transport_name = "<unknown>";
                break;
        }
-       if (atomic_long_add_unless(&session_file->f_count,
-               1, INT_MAX) == INT_MAX) {
+       if (!atomic_long_add_unless(&session_file->f_count, 1, LONG_MAX)) {
+               ret = -EOVERFLOW;
                goto refcount_error;
        }
        /*
@@ -489,13 +490,12 @@ static
 long lttng_session_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 {
        struct lttng_session *session = file->private_data;
+       struct lttng_kernel_channel chan_param;
+       struct lttng_kernel_old_channel old_chan_param;
 
        switch (cmd) {
        case LTTNG_KERNEL_OLD_CHANNEL:
        {
-               struct lttng_kernel_channel chan_param;
-               struct lttng_kernel_old_channel old_chan_param;
-
                if (copy_from_user(&old_chan_param,
                                (struct lttng_kernel_old_channel __user *) arg,
                                sizeof(struct lttng_kernel_old_channel)))
@@ -512,8 +512,6 @@ long lttng_session_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
        }
        case LTTNG_KERNEL_CHANNEL:
        {
-               struct lttng_kernel_channel chan_param;
-
                if (copy_from_user(&chan_param,
                                (struct lttng_kernel_channel __user *) arg,
                                sizeof(struct lttng_kernel_channel)))
@@ -533,9 +531,6 @@ long lttng_session_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
                return lttng_session_disable(session);
        case LTTNG_KERNEL_OLD_METADATA:
        {
-               struct lttng_kernel_channel chan_param;
-               struct lttng_kernel_old_channel old_chan_param;
-
                if (copy_from_user(&old_chan_param,
                                (struct lttng_kernel_old_channel __user *) arg,
                                sizeof(struct lttng_kernel_old_channel)))
@@ -552,8 +547,6 @@ long lttng_session_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
        }
        case LTTNG_KERNEL_METADATA:
        {
-               struct lttng_kernel_channel chan_param;
-
                if (copy_from_user(&chan_param,
                                        (struct lttng_kernel_channel __user *) arg,
                                        sizeof(struct lttng_kernel_channel)))
@@ -683,6 +676,7 @@ long lttng_metadata_ring_buffer_ioctl(struct file *filp,
                 */
                return -ENOSYS;
        }
+       case RING_BUFFER_FLUSH_EMPTY:   /* Fall-through. */
        case RING_BUFFER_FLUSH:
        {
                struct lttng_metadata_stream *stream = filp->private_data;
@@ -759,6 +753,7 @@ long lttng_metadata_ring_buffer_compat_ioctl(struct file *filp,
                 */
                return -ENOSYS;
        }
+       case RING_BUFFER_FLUSH_EMPTY:   /* Fall-through. */
        case RING_BUFFER_FLUSH:
        {
                struct lttng_metadata_stream *stream = filp->private_data;
@@ -1035,8 +1030,7 @@ int lttng_abi_create_event(struct file *channel_file,
                goto file_error;
        }
        /* The event holds a reference on the channel */
-       if (atomic_long_add_unless(&channel_file->f_count,
-               1, INT_MAX) == INT_MAX) {
+       if (!atomic_long_add_unless(&channel_file->f_count, 1, LONG_MAX)) {
                ret = -EOVERFLOW;
                goto refcount_error;
        }
@@ -1720,6 +1714,12 @@ int __init lttng_abi_init(void)
 
        wrapper_vmalloc_sync_all();
        lttng_clock_ref();
+
+       ret = lttng_tp_mempool_init();
+       if (ret) {
+               goto error;
+       }
+
        lttng_proc_dentry = proc_create_data("lttng", S_IRUSR | S_IWUSR, NULL,
                                        &lttng_fops, NULL);
        
@@ -1732,6 +1732,7 @@ int __init lttng_abi_init(void)
        return 0;
 
 error:
+       lttng_tp_mempool_destroy();
        lttng_clock_unref();
        return ret;
 }
@@ -1739,6 +1740,7 @@ error:
 /* No __exit annotation because used by init error path too. */
 void lttng_abi_exit(void)
 {
+       lttng_tp_mempool_destroy();
        lttng_clock_unref();
        if (lttng_proc_dentry)
                remove_proc_entry("lttng", NULL);
This page took 0.024219 seconds and 4 git commands to generate.