Indirect calls could be very expensive nowadays, so try to use direct calls whenever possible. Signed-off-by: Pavel Begunkov <asml.silence@xxxxxxxxx> --- fs/splice.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/fs/splice.c b/fs/splice.c index 6a6f30432688..91448d855ff0 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -852,15 +852,10 @@ EXPORT_SYMBOL(generic_splice_sendpage); static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags) { - ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, - loff_t *, size_t, unsigned int); - if (out->f_op->splice_write) - splice_write = out->f_op->splice_write; + return out->f_op->splice_write(pipe, out, ppos, len, flags); else - splice_write = default_file_splice_write; - - return splice_write(pipe, out, ppos, len, flags); + return default_file_splice_write(pipe, out, ppos, len, flags); } /* @@ -870,8 +865,6 @@ static long do_splice_to(struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags) { - ssize_t (*splice_read)(struct file *, loff_t *, - struct pipe_inode_info *, size_t, unsigned int); int ret; if (unlikely(!(in->f_mode & FMODE_READ))) @@ -885,11 +878,9 @@ static long do_splice_to(struct file *in, loff_t *ppos, len = MAX_RW_COUNT; if (in->f_op->splice_read) - splice_read = in->f_op->splice_read; + return in->f_op->splice_read(in, ppos, pipe, len, flags); else - splice_read = default_file_splice_read; - - return splice_read(in, ppos, pipe, len, flags); + return default_file_splice_read(in, ppos, pipe, len, flags); } /** -- 2.24.0