Remove splice_to_pipe kallsyms wrapper
authorMichael Jeanson <mjeanson@efficios.com>
Mon, 8 Jan 2024 21:05:22 +0000 (16:05 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 9 Jan 2024 16:11:31 +0000 (11:11 -0500)
Starting from kernel v4.2, the splice_to_pipe symbol is exported for GPL
modules. Use it rather than the kallsyms wrapper.

This fixes commit 0e5e973df5 which should have removed the wrapper
rather than using it all the time.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I52ce8cc99c3174fea30479af8fcf72879ef8aa47

include/wrapper/splice.h [deleted file]
src/lib/Kbuild
src/lib/ringbuffer/ring_buffer_splice.c
src/wrapper/splice.c [deleted file]

diff --git a/include/wrapper/splice.h b/include/wrapper/splice.h
deleted file mode 100644 (file)
index 93b6f65..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
- *
- * wrapper/splice.h
- *
- * wrapper around splice_to_pipe. Using KALLSYMS to get its address when
- * available, else we need to have a kernel that exports this function to GPL
- * modules.
- *
- * Copyright (C) 2011-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- */
-
-#ifndef _LTTNG_WRAPPER_SPLICE_H
-#define _LTTNG_WRAPPER_SPLICE_H
-
-#include <linux/splice.h>
-
-ssize_t wrapper_splice_to_pipe(struct pipe_inode_info *pipe,
-                              struct splice_pipe_desc *spd);
-
-#endif /* _LTTNG_WRAPPER_SPLICE_H */
index b356736cb53fa74842defbdaa752046382eadfe8..4d1e9585fbe6f386db7912abc29a6354cd2e33c1 100644 (file)
@@ -15,8 +15,7 @@ lttng-lib-ring-buffer-objs := \
   ringbuffer/ring_buffer_vfs.o \
   ringbuffer/ring_buffer_splice.o \
   ringbuffer/ring_buffer_mmap.o \
-  prio_heap/lttng_prio_heap.o \
-  ../wrapper/splice.o
+  prio_heap/lttng_prio_heap.o
 
 obj-$(CONFIG_LTTNG) += lttng-counter.o
 
index 375255b51cf1725a25927912be211179a4dd3bc9..f34bc35544f2e6d16799e78b55a16a9ec0249be7 100644 (file)
@@ -12,9 +12,9 @@
 
 #include <linux/module.h>
 #include <linux/fs.h>
+#include <linux/splice.h>
 #include <lttng/kernel-version.h>
 
-#include <wrapper/splice.h>
 #include <ringbuffer/backend.h>
 #include <ringbuffer/frontend.h>
 #include <ringbuffer/vfs.h>
@@ -166,7 +166,7 @@ static int subbuf_splice_actor(struct file *in,
        if (!spd.nr_pages)
                return 0;
 
-       return wrapper_splice_to_pipe(pipe, &spd);
+       return splice_to_pipe(pipe, &spd);
 }
 
 ssize_t lib_ring_buffer_splice_read(struct file *in, loff_t *ppos,
diff --git a/src/wrapper/splice.c b/src/wrapper/splice.c
deleted file mode 100644 (file)
index 51b9673..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
- *
- * wrapper/splice.c
- *
- * wrapper around splice_to_pipe. Using KALLSYMS to get its address when
- * available, else we need to have a kernel that exports this function to GPL
- * modules. The export was introduced in kernel 4.2.
- *
- * Copyright (C) 2011-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- */
-
-#include <lttng/kernel-version.h>
-
-#ifdef CONFIG_KALLSYMS
-
-#include <linux/kallsyms.h>
-#include <linux/fs.h>
-#include <linux/splice.h>
-#include <wrapper/kallsyms.h>
-
-static
-ssize_t (*splice_to_pipe_sym)(struct pipe_inode_info *pipe,
-                             struct splice_pipe_desc *spd);
-
-ssize_t wrapper_splice_to_pipe(struct pipe_inode_info *pipe,
-                              struct splice_pipe_desc *spd)
-{
-       if (!splice_to_pipe_sym)
-               splice_to_pipe_sym = (void *) kallsyms_lookup_funcptr("splice_to_pipe");
-       if (splice_to_pipe_sym) {
-               return splice_to_pipe_sym(pipe, spd);
-       } else {
-               printk_once(KERN_WARNING "LTTng: splice_to_pipe symbol lookup failed.\n");
-               return -ENOSYS;
-       }
-}
-
-/*
- * Canary function to check for 'splice_to_pipe()' at compile time.
- *
- * From 'include/linux/splice.h':
- *
- *   extern ssize_t splice_to_pipe(struct pipe_inode_info *,
- *                                 struct splice_pipe_desc *spd);
- */
-__attribute__((unused)) static
-ssize_t __canary__splice_to_pipe(struct pipe_inode_info *pipe,
-                               struct splice_pipe_desc *spd)
-{
-       return splice_to_pipe(pipe, spd);
-}
-
-#else
-
-#include <linux/fs.h>
-#include <linux/splice.h>
-
-ssize_t wrapper_splice_to_pipe(struct pipe_inode_info *pipe,
-                              struct splice_pipe_desc *spd)
-{
-       return splice_to_pipe(pipe, spd);
-}
-
-#endif
This page took 0.027458 seconds and 4 git commands to generate.