summaryrefslogtreecommitdiffstats
path: root/backport-include/linux/kref.h
diff options
context:
space:
mode:
Diffstat (limited to 'backport-include/linux/kref.h')
-rw-r--r--backport-include/linux/kref.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/backport-include/linux/kref.h b/backport-include/linux/kref.h
new file mode 100644
index 0000000..d7b6381
--- /dev/null
+++ b/backport-include/linux/kref.h
@@ -0,0 +1,26 @@
+#ifndef __BACKPORT_KREF_H
+#define __BACKPORT_KREF_H
+#include_next <linux/kref.h>
+#include <linux/version.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
+#include <linux/atomic.h>
+
+/* This was backported to some kernels (e.g. 3.2.44 and 3.4.41), mask it */
+#define kref_get_unless_zero LINUX_BACKPORT(kref_get_unless_zero)
+
+/* This backports:
+ *
+ * commit 4b20db3de8dab005b07c74161cb041db8c5ff3a7
+ * Author: Thomas Hellstrom <thellstrom@vmware.com>
+ * Date: Tue Nov 6 11:31:49 2012 +0000
+ *
+ * kref: Implement kref_get_unless_zero v3
+ */
+static inline int __must_check kref_get_unless_zero(struct kref *kref)
+{
+ return atomic_add_unless(&kref->refcount, 1, 0);
+}
+#endif
+
+#endif /* __BACKPORT_KREF_H */