From: Michael Jeanson Date: Mon, 8 Jan 2024 21:05:22 +0000 (-0500) Subject: Remove splice_to_pipe kallsyms wrapper X-Git-Url: http://git.liburcu.org/?p=lttng-modules.git;a=commitdiff_plain;h=dfdb34fd8576fba33510491aef5cd5f6f67b56b8 Remove splice_to_pipe kallsyms wrapper 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 Change-Id: I52ce8cc99c3174fea30479af8fcf72879ef8aa47 --- diff --git a/include/wrapper/splice.h b/include/wrapper/splice.h deleted file mode 100644 index 93b6f650..00000000 --- a/include/wrapper/splice.h +++ /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 - */ - -#ifndef _LTTNG_WRAPPER_SPLICE_H -#define _LTTNG_WRAPPER_SPLICE_H - -#include - -ssize_t wrapper_splice_to_pipe(struct pipe_inode_info *pipe, - struct splice_pipe_desc *spd); - -#endif /* _LTTNG_WRAPPER_SPLICE_H */ diff --git a/src/lib/Kbuild b/src/lib/Kbuild index b356736c..4d1e9585 100644 --- a/src/lib/Kbuild +++ b/src/lib/Kbuild @@ -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 diff --git a/src/lib/ringbuffer/ring_buffer_splice.c b/src/lib/ringbuffer/ring_buffer_splice.c index 375255b5..f34bc355 100644 --- a/src/lib/ringbuffer/ring_buffer_splice.c +++ b/src/lib/ringbuffer/ring_buffer_splice.c @@ -12,9 +12,9 @@ #include #include +#include #include -#include #include #include #include @@ -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 index 51b9673f..00000000 --- a/src/wrapper/splice.c +++ /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 - */ - -#include - -#ifdef CONFIG_KALLSYMS - -#include -#include -#include -#include - -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 -#include - -ssize_t wrapper_splice_to_pipe(struct pipe_inode_info *pipe, - struct splice_pipe_desc *spd) -{ - return splice_to_pipe(pipe, spd); -} - -#endif