fix: lookup_fd_rcu replaced by lookup_fdget_rcu in linux 6.7.0-rc1
[lttng-modules.git] / include / wrapper / fdtable.h
index 559a1dcea073a034ee277e170db62a259c8b94d0..46fc3f33dddef766d7dfea8e71f7a8711b956b74 100644 (file)
@@ -8,55 +8,37 @@
 #ifndef _LTTNG_WRAPPER_FDTABLE_H
 #define _LTTNG_WRAPPER_FDTABLE_H
 
-#include <linux/version.h>
+#include <lttng/kernel-version.h>
 #include <linux/fdtable.h>
+#include <linux/sched.h>
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,11,0))
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,7,0))
 static inline
-struct file *lttng_lookup_fd_rcu(unsigned int fd)
+struct file *lttng_lookup_fdget_rcu(unsigned int fd)
 {
-       return lookup_fd_rcu(fd);
+       return lookup_fdget_rcu(fd);
 }
-#else
+
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
 static inline
-struct file *lttng_lookup_fd_rcu(unsigned int fd)
+struct file *lttng_lookup_fdget_rcu(unsigned int fd)
 {
-       return fcheck(fd);
-}
-#endif
-
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
-
-int lttng_iterate_fd(struct files_struct *files,
-               unsigned int first,
-               int (*cb)(const void *, struct file *, unsigned int),
-               const void *ctx);
-
-#else
-
-/*
- * iterate_fd() appeared at commit
- * c3c073f808b22dfae15ef8412b6f7b998644139a in the Linux kernel (first
- * released kernel: v3.7).
- */
-#define lttng_iterate_fd       iterate_fd
+       struct file* file = lookup_fd_rcu(fd);
 
-#endif
-
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-
-static inline bool lttng_close_on_exec(int fd, const struct fdtable *fdt)
-{
-       return close_on_exec(fd, fdt);
+       if (unlikely(!file || !get_file_rcu(file)))
+               return NULL;
+       return file;
 }
-
 #else
-
-static inline bool lttng_close_on_exec(int fd, const struct fdtable *fdt)
+static inline
+struct file *lttng_lookup_fdget_rcu(unsigned int fd)
 {
-       return FD_ISSET(fd, fdt->close_on_exec);
-}
+       struct file* file = fcheck(fd);
 
+       if (unlikely(!file || !get_file_rcu(file)))
+               return NULL;
+       return file;
+}
 #endif
 
 #endif /* _LTTNG_WRAPPER_FDTABLE_H */
This page took 0.024499 seconds and 4 git commands to generate.