diff options
Diffstat (limited to 'fs/splice.c')
-rw-r--r-- | fs/splice.c | 7 |
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 | ||
572 | static ssize_t kernel_write(struct file *file, const char *buf, size_t count, | 572 | ssize_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 | } |
586 | EXPORT_SYMBOL(kernel_write); | ||
586 | 587 | ||
587 | ssize_t default_file_splice_read(struct file *in, loff_t *ppos, | 588 | ssize_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 | ||