From 77932315cd23b50c88462872a3b86ad5997e5b47 Mon Sep 17 00:00:00 2001 From: Francis Deslauriers Date: Tue, 7 Mar 2017 23:37:30 -0500 Subject: [PATCH] Fix: kref changes for kernel 4.11 The underlying type of `struct kref` changed in kernel 4.11 from an atomic_t to a refcount_t. This change was introduced in kernel commit:10383ae. This commit also added a builtin overflow checks to `kref_get()` so we use it. Signed-off-by: Francis Deslauriers Signed-off-by: Mathieu Desnoyers --- wrapper/kref.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/wrapper/kref.h b/wrapper/kref.h index f30a9aed..3f3be7a4 100644 --- a/wrapper/kref.h +++ b/wrapper/kref.h @@ -28,15 +28,24 @@ #include #include +#include /* * 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 */ -- 2.34.1