sfc: fix return value check in efx_ptp_probe_channel()
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / fs / splice.c
index 6b485b8753bdb9dd09f17fd122f0cdc3f44a9c3a..e6b25598c8c413d66026f96e6d6d1b351e28b62c 100644 (file)
@@ -219,7 +219,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
                        page_nr++;
                        ret += buf->len;
 
-                       if (pipe->inode)
+                       if (pipe->files)
                                do_wakeup = 1;
 
                        if (!--spd->nr_pages)
@@ -829,7 +829,7 @@ int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_desc *sd,
                        ops->release(pipe, buf);
                        pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1);
                        pipe->nrbufs--;
-                       if (pipe->inode)
+                       if (pipe->files)
                                sd->need_wakeup = true;
                }
 
@@ -1001,8 +1001,6 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
        };
        ssize_t ret;
 
-       sb_start_write(inode->i_sb);
-
        pipe_lock(pipe);
 
        splice_from_pipe_begin(&sd);
@@ -1038,7 +1036,6 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
                        *ppos += ret;
                balance_dirty_pages_ratelimited(mapping);
        }
-       sb_end_write(inode->i_sb);
 
        return ret;
 }
@@ -1118,7 +1115,10 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
        else
                splice_write = default_file_splice_write;
 
-       return splice_write(pipe, out, ppos, len, flags);
+       file_start_write(out);
+       ret = splice_write(pipe, out, ppos, len, flags);
+       file_end_write(out);
+       return ret;
 }
 
 /*
@@ -1184,7 +1184,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
         */
        pipe = current->splice_pipe;
        if (unlikely(!pipe)) {
-               pipe = alloc_pipe_info(NULL);
+               pipe = alloc_pipe_info();
                if (!pipe)
                        return -ENOMEM;