Implement structure, compound array/sequence types
[lttng-modules.git] / lib / ringbuffer / ring_buffer_frontend.c
index c4b797ce8af76faf9ba5209d054b89fb42326656..9ebdd5fbeefab0090d4353e42cf768e462b1647e 100644 (file)
 #include <linux/module.h>
 #include <linux/percpu.h>
 
-#include "../../wrapper/ringbuffer/config.h"
-#include "../../wrapper/ringbuffer/backend.h"
-#include "../../wrapper/ringbuffer/frontend.h"
-#include "../../wrapper/ringbuffer/iterator.h"
-#include "../../wrapper/ringbuffer/nohz.h"
-#include "../../wrapper/atomic.h"
-#include "../../wrapper/percpu-defs.h"
+#include <wrapper/ringbuffer/config.h>
+#include <wrapper/ringbuffer/backend.h>
+#include <wrapper/ringbuffer/frontend.h>
+#include <wrapper/ringbuffer/iterator.h>
+#include <wrapper/ringbuffer/nohz.h>
+#include <wrapper/atomic.h>
+#include <wrapper/kref.h>
+#include <wrapper/percpu-defs.h>
 
 /*
  * Internal structure representing offsets to use at a sub-buffer switch.
@@ -793,7 +794,10 @@ int lib_ring_buffer_open_read(struct lib_ring_buffer *buf)
 
        if (!atomic_long_add_unless(&buf->active_readers, 1, 1))
                return -EBUSY;
-       kref_get(&chan->ref);
+       if (!lttng_kref_get(&chan->ref)) {
+               atomic_long_dec(&buf->active_readers);
+               return -EOVERFLOW;
+       }
        lttng_smp_mb__after_atomic();
        return 0;
 }
This page took 0.022788 seconds and 4 git commands to generate.