]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
fs: make the pipe_buf_operations ->confirm operation optional
authorChristoph Hellwig <hch@lst.de>
Wed, 20 May 2020 15:58:15 +0000 (17:58 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 20 May 2020 16:11:26 +0000 (12:11 -0400)
Just return 0 for success if it is not present.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/pipe.c
fs/splice.c
include/linux/pipe_fs_i.h
kernel/relay.c
kernel/trace/trace.c
net/smc/smc_rx.c

index 8e52b78b40427798ee3a3edabf3614553c3182ae..58890897402abc339960fb152d1eb86dfeab163d 100644 (file)
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -200,22 +200,6 @@ bool generic_pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf)
 }
 EXPORT_SYMBOL(generic_pipe_buf_get);
 
-/**
- * generic_pipe_buf_confirm - verify contents of the pipe buffer
- * @info:      the pipe that the buffer belongs to
- * @buf:       the buffer to confirm
- *
- * Description:
- *     This function does nothing, because the generic pipe code uses
- *     pages that are always good when inserted into the pipe.
- */
-int generic_pipe_buf_confirm(struct pipe_inode_info *info,
-                            struct pipe_buffer *buf)
-{
-       return 0;
-}
-EXPORT_SYMBOL(generic_pipe_buf_confirm);
-
 /**
  * generic_pipe_buf_release - put a reference to a &struct pipe_buffer
  * @pipe:      the pipe that the buffer belongs to
@@ -232,7 +216,6 @@ void generic_pipe_buf_release(struct pipe_inode_info *pipe,
 EXPORT_SYMBOL(generic_pipe_buf_release);
 
 static const struct pipe_buf_operations anon_pipe_buf_ops = {
-       .confirm = generic_pipe_buf_confirm,
        .release = anon_pipe_buf_release,
        .steal = anon_pipe_buf_steal,
        .get = generic_pipe_buf_get,
index 6c19bda274c8f4eb48d511dd5a20483122983e1c..bc834073cf743c7b7bd210dfc1fff7f6cdb6efad 100644 (file)
@@ -156,7 +156,6 @@ static int user_page_pipe_buf_steal(struct pipe_inode_info *pipe,
 }
 
 static const struct pipe_buf_operations user_page_pipe_buf_ops = {
-       .confirm = generic_pipe_buf_confirm,
        .release = page_cache_pipe_buf_release,
        .steal = user_page_pipe_buf_steal,
        .get = generic_pipe_buf_get,
@@ -331,7 +330,6 @@ ssize_t generic_file_splice_read(struct file *in, loff_t *ppos,
 EXPORT_SYMBOL(generic_file_splice_read);
 
 const struct pipe_buf_operations default_pipe_buf_ops = {
-       .confirm = generic_pipe_buf_confirm,
        .release = generic_pipe_buf_release,
        .steal = generic_pipe_buf_steal,
        .get = generic_pipe_buf_get,
@@ -339,7 +337,6 @@ const struct pipe_buf_operations default_pipe_buf_ops = {
 
 /* Pipe buffer operations for a socket and similar. */
 const struct pipe_buf_operations nosteal_pipe_buf_ops = {
-       .confirm = generic_pipe_buf_confirm,
        .release = generic_pipe_buf_release,
        .get = generic_pipe_buf_get,
 };
index e022b245930158324de881af83bb8da612d09840..7c057daa09313cceb1df9b609b52d615221d1f1d 100644 (file)
@@ -82,7 +82,7 @@ struct pipe_buf_operations {
         * and that the contents are good. If the pages in the pipe belong
         * to a file system, we may need to wait for IO completion in this
         * hook. Returns 0 for good, or a negative error value in case of
-        * error.
+        * error.  If not present all pages are considered good.
         */
        int (*confirm)(struct pipe_inode_info *, struct pipe_buffer *);
 
@@ -195,6 +195,8 @@ static inline void pipe_buf_release(struct pipe_inode_info *pipe,
 static inline int pipe_buf_confirm(struct pipe_inode_info *pipe,
                                   struct pipe_buffer *buf)
 {
+       if (!buf->ops->confirm)
+               return 0;
        return buf->ops->confirm(pipe, buf);
 }
 
@@ -232,7 +234,6 @@ void free_pipe_info(struct pipe_inode_info *);
 
 /* Generic pipe buffer ops functions */
 bool generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
-int generic_pipe_buf_confirm(struct pipe_inode_info *, struct pipe_buffer *);
 int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *);
 void generic_pipe_buf_release(struct pipe_inode_info *, struct pipe_buffer *);
 
index ade14fb7ce2e60cc676f7807daa0302ce24e7b79..c5ece4c2b04d4a81b1947f72ea77cf18da9ca5eb 100644 (file)
@@ -1177,7 +1177,6 @@ static void relay_pipe_buf_release(struct pipe_inode_info *pipe,
 }
 
 static const struct pipe_buf_operations relay_pipe_buf_ops = {
-       .confirm = generic_pipe_buf_confirm,
        .release = relay_pipe_buf_release,
        .steal = generic_pipe_buf_steal,
        .get = generic_pipe_buf_get,
index 29fa25cfb6c26d0f3a80cf281e34b4edfce060c4..63d1ab978435510a1951d94894c2308561ee5d0f 100644 (file)
@@ -7574,7 +7574,6 @@ static bool buffer_pipe_buf_get(struct pipe_inode_info *pipe,
 
 /* Pipe buffer operations for a buffer. */
 static const struct pipe_buf_operations buffer_pipe_buf_ops = {
-       .confirm                = generic_pipe_buf_confirm,
        .release                = buffer_pipe_buf_release,
        .get                    = buffer_pipe_buf_get,
 };
index 5fe25279702d27b1111221bd0092cf3f0ea72207..fcfac59f8b7280e81836a703a010f3a5cd541f3a 100644 (file)
@@ -130,7 +130,6 @@ out:
 }
 
 static const struct pipe_buf_operations smc_pipe_ops = {
-       .confirm = generic_pipe_buf_confirm,
        .release = smc_rx_pipe_buf_release,
        .get = generic_pipe_buf_get
 };