#include <linux/delay.h>
#include <linux/module.h>
#include <linux/percpu.h>
+#include <linux/kref.h>
#include <asm/cacheflush.h>
#include <wrapper/ringbuffer/config.h>
#include <wrapper/ringbuffer/iterator.h>
#include <wrapper/ringbuffer/nohz.h>
#include <wrapper/atomic.h>
-#include <wrapper/kref.h>
#include <wrapper/percpu-defs.h>
#include <wrapper/timer.h>
if (!atomic_long_add_unless(&buf->active_readers, 1, 1))
return -EBUSY;
- if (!lttng_kref_get(&chan->ref)) {
- atomic_long_dec(&buf->active_readers);
- return -EOVERFLOW;
- }
+ kref_get(&chan->ref);
lttng_smp_mb__after_atomic();
return 0;
}
#include <linux/uaccess.h>
#include <linux/slab.h>
#include <linux/err.h>
+#include <linux/kref.h>
#include <wrapper/ringbuffer/vfs.h>
#include <wrapper/ringbuffer/backend.h>
#include <wrapper/ringbuffer/frontend.h>
#include <wrapper/poll.h>
#include <wrapper/file.h>
-#include <wrapper/kref.h>
#include <lttng-string-utils.h>
#include <lttng-abi.h>
#include <lttng-abi-old.h>
goto notransport;
}
- if (!lttng_kref_get(&session->metadata_cache->refcount)) {
- ret = -EOVERFLOW;
- goto kref_error;
- }
-
+ kref_get(&session->metadata_cache->refcount);
ret = lttng_abi_create_stream_fd(channel_file, stream_priv,
<tng_metadata_ring_buffer_file_operations);
if (ret < 0)
fd_error:
kref_put(&session->metadata_cache->refcount, metadata_cache_destroy);
-kref_error:
module_put(metadata_stream->transport->owner);
notransport:
kfree(metadata_stream);
+++ /dev/null
-/* SPDX-License-Identifier: GPL-2.0-only
- *
- * wrapper/kref.h
- *
- * wrapper around linux/kref.h.
- *
- * Copyright (C) 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- *
- * This wrapper code is derived from Linux 3.19.2 include/linux/list.h
- * and include/linux/rculist.h, hence the GPLv2 license applied to this
- * file.
- */
-
-#ifndef _LTTNG_WRAPPER_KREF_H
-#define _LTTNG_WRAPPER_KREF_H
-
-#include <linux/kref.h>
-#include <linux/rculist.h>
-#include <linux/version.h>
-
-/*
- * lttng_kref_get: get reference count, checking for overflow.
- *
- * Return 1 if reference is taken, 0 otherwise (overflow).
- */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
-static inline int lttng_kref_get(struct kref *kref)
-{
- kref_get(kref);
- return 1;
-}
-#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) */
-static inline int lttng_kref_get(struct kref *kref)
-{
- return atomic_add_unless(&kref->refcount, 1, INT_MAX);
-}
-#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) */
-
-#endif /* _LTTNG_WRAPPER_KREF_H */