aboutsummaryrefslogtreecommitdiffstats
path: root/fs/splice.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/splice.c')
-rw-r--r--fs/splice.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/splice.c b/fs/splice.c
index 6909d89d0da5..718bd0056384 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -569,7 +569,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec,
569 return res; 569 return res;
570} 570}
571 571
572static ssize_t kernel_write(struct file *file, const char *buf, size_t count, 572ssize_t kernel_write(struct file *file, const char *buf, size_t count,
573 loff_t pos) 573 loff_t pos)
574{ 574{
575 mm_segment_t old_fs; 575 mm_segment_t old_fs;
@@ -578,11 +578,12 @@ static ssize_t kernel_write(struct file *file, const char *buf, size_t count,
578 old_fs = get_fs(); 578 old_fs = get_fs();
579 set_fs(get_ds()); 579 set_fs(get_ds());
580 /* The cast to a user pointer is valid due to the set_fs() */ 580 /* The cast to a user pointer is valid due to the set_fs() */
581 res = vfs_write(file, (const char __user *)buf, count, &pos); 581 res = vfs_write(file, (__force const char __user *)buf, count, &pos);
582 set_fs(old_fs); 582 set_fs(old_fs);
583 583
584 return res; 584 return res;
585} 585}
586EXPORT_SYMBOL(kernel_write);
586 587
587ssize_t default_file_splice_read(struct file *in, loff_t *ppos, 588ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
588 struct pipe_inode_info *pipe, size_t len, 589 struct pipe_inode_info *pipe, size_t len,
@@ -1170,7 +1171,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
1170 * randomly drop data for eg socket -> socket splicing. Use the 1171 * randomly drop data for eg socket -> socket splicing. Use the
1171 * piped splicing for that! 1172 * piped splicing for that!
1172 */ 1173 */
1173 i_mode = in->f_path.dentry->d_inode->i_mode; 1174 i_mode = file_inode(in)->i_mode;
1174 if (unlikely(!S_ISREG(i_mode) && !S_ISBLK(i_mode))) 1175 if (unlikely(!S_ISREG(i_mode) && !S_ISBLK(i_mode)))
1175 return -EINVAL; 1176 return -EINVAL;
1176 1177