diff --git a/fs/splice.c b/fs/splice.c index d0230cf8ec57..e69eddaf9d7c 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -763,17 +763,6 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, return out->f_op->splice_write(pipe, out, ppos, len, flags); } -/* - * Indicate to the caller that there was a premature EOF when reading from the - * source and the caller didn't indicate they would be sending more data after - * this. - */ -static void do_splice_eof(struct splice_desc *sd) -{ - if (sd->splice_eof) - sd->splice_eof(sd); -} - /* * Attempt to initiate a splice from a file to a pipe. */ @@ -874,7 +863,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, ret = do_splice_to(in, &pos, pipe, len, flags); if (unlikely(ret <= 0)) - goto read_failure; + goto out_release; read_len = ret; sd->total_len = read_len; @@ -914,15 +903,6 @@ done: file_accessed(in); return bytes; -read_failure: - /* - * If the user did *not* set SPLICE_F_MORE *and* we didn't hit that - * "use all of len" case that cleared SPLICE_F_MORE, *and* we did a - * "->splice_in()" that returned EOF (ie zero) *and* we have sent at - * least 1 byte *then* we will also do the ->splice_eof() call. - */ - if (ret == 0 && !more && len > 0 && bytes) - do_splice_eof(sd); out_release: /* * If we did an incomplete transfer we must release @@ -951,14 +931,6 @@ static int direct_splice_actor(struct pipe_inode_info *pipe, sd->flags); } -static void direct_file_splice_eof(struct splice_desc *sd) -{ - struct file *file = sd->u.file; - - if (file->f_op->splice_eof) - file->f_op->splice_eof(file); -} - /** * do_splice_direct - splices data directly between two files * @in: file to splice from @@ -984,7 +956,6 @@ long do_splice_direct(struct file *in, loff_t *ppos, struct file *out, .flags = flags, .pos = *ppos, .u.file = out, - .splice_eof = direct_file_splice_eof, .opos = opos, }; long ret; diff --git a/include/linux/fs.h b/include/linux/fs.h index 82101ab3cedf..57468b7a8599 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2187,7 +2187,6 @@ struct file_operations { int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); - void (*splice_eof)(struct file *file); int (*setlease)(struct file *, long, struct file_lock **, void **); long (*fallocate)(struct file *file, int mode, loff_t offset, loff_t len); diff --git a/include/linux/net.h b/include/linux/net.h index e7ce51efe791..e08f23dd1d1a 100644 --- a/include/linux/net.h +++ b/include/linux/net.h @@ -210,7 +210,6 @@ struct proto_ops { int offset, size_t size, int flags); ssize_t (*splice_read)(struct socket *sock, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags); - void (*splice_eof)(struct socket *sock); int (*set_peek_off)(struct sock *sk, int val); int (*peek_len)(struct socket *sock); diff --git a/include/linux/splice.h b/include/linux/splice.h index 41a70687be85..a55179fd60fc 100644 --- a/include/linux/splice.h +++ b/include/linux/splice.h @@ -38,7 +38,6 @@ struct splice_desc { struct file *file; /* file to read/write */ void *data; /* cookie */ } u; - void (*splice_eof)(struct splice_desc *sd); /* Unexpected EOF handler */ loff_t pos; /* file position */ loff_t *opos; /* sendfile: output position */ size_t num_spliced; /* number of bytes already spliced */ diff --git a/include/net/sock.h b/include/net/sock.h index d9a7c3b33868..e7e442448861 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1293,7 +1293,6 @@ struct proto { size_t len, int flags, int *addr_len); int (*sendpage)(struct sock *sk, struct page *page, int offset, size_t size, int flags); - void (*splice_eof)(struct socket *sock); int (*bind)(struct sock *sk, struct sockaddr *addr, int addr_len); int (*bind_add)(struct sock *sk, diff --git a/net/socket.c b/net/socket.c index 639d76f20384..6f39f7b0cc85 100644 --- a/net/socket.c +++ b/net/socket.c @@ -130,7 +130,6 @@ static ssize_t sock_sendpage(struct file *file, struct page *page, static ssize_t sock_splice_read(struct file *file, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags); -static void sock_splice_eof(struct file *file); #ifdef CONFIG_PROC_FS static void sock_show_fdinfo(struct seq_file *m, struct file *f) @@ -165,7 +164,6 @@ static const struct file_operations socket_file_ops = { .sendpage = sock_sendpage, .splice_write = generic_splice_sendpage, .splice_read = sock_splice_read, - .splice_eof = sock_splice_eof, .show_fdinfo = sock_show_fdinfo, }; @@ -1093,14 +1091,6 @@ static ssize_t sock_splice_read(struct file *file, loff_t *ppos, return sock->ops->splice_read(sock, ppos, pipe, len, flags); } -static void sock_splice_eof(struct file *file) -{ - struct socket *sock = file->private_data; - - if (sock->ops->splice_eof) - sock->ops->splice_eof(sock); -} - static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to) { struct file *file = iocb->ki_filp;