fix: close_on_exec(): pass files_struct instead of fdtable (v6.10)
authorMichael Jeanson <mjeanson@efficios.com>
Mon, 27 May 2024 14:49:45 +0000 (10:49 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 13 Jun 2024 13:15:46 +0000 (09:15 -0400)
See upstream commit:

  commit f60d374d2cc88034385265d193a38e3f4a4b430c
  Author: Al Viro <viro@zeniv.linux.org.uk>
  Date:   Thu Jan 4 21:35:38 2024 -0500

    close_on_exec(): pass files_struct instead of fdtable

    both callers are happier that way...

Change-Id: I8cdabb073c2090842b27b74954d86cb486c43b3e
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/wrapper/fdtable.h
src/lttng-statedump-impl.c

index 8b32c030cbb5b36eb42262a7b4228242756237be..5e89d66f497e45cbe49c5085a67fbaae70f7b2f9 100644 (file)
@@ -69,18 +69,27 @@ int lttng_iterate_fd(struct files_struct *files,
 
 #endif
 
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,4,0))
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,10,0))
+static inline
+bool lttng_close_on_exec(unsigned int fd, const struct files_struct *files)
+{
+       return close_on_exec(fd, files);
+}
 
-static inline bool lttng_close_on_exec(int fd, const struct fdtable *fdt)
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,4,0))
+
+static inline
+bool lttng_close_on_exec(unsigned int fd, const struct files_struct *files)
 {
-       return close_on_exec(fd, fdt);
+       return close_on_exec(fd, files_fdtable(files));
 }
 
 #else
 
-static inline bool lttng_close_on_exec(int fd, const struct fdtable *fdt)
+static inline
+bool lttng_close_on_exec(unsigned int fd, const struct files_struct *files)
 {
-       return FD_ISSET(fd, fdt->close_on_exec);
+       return FD_ISSET(fd, files_fdtable(files)->close_on_exec);
 }
 
 #endif
index 6ca1bf2e25c932ee8c8d776023a796dd2082fe86..87db2f60bba29796679da4f6427d0a158a490758 100644 (file)
@@ -451,7 +451,7 @@ int lttng_dump_one_fd(const void *p, struct file *file, unsigned int fd)
         * the lock is taken, but we are not aware whether this is
         * guaranteed or not, so play safe.
         */
-       if (fd < fdt->max_fds && lttng_close_on_exec(fd, fdt))
+       if (fd < fdt->max_fds && lttng_close_on_exec(fd, ctx->files))
                flags |= O_CLOEXEC;
        if (IS_ERR(s)) {
                struct dentry *dentry = file->f_path.dentry;
This page took 0.027331 seconds and 4 git commands to generate.